/**
* Author: Sergey Kopeliovich (Burunduk30@gmail.com5
* Date: 2014.09.12
* OK, 2.377 sec
*/
#include <cstdio>
#include <cassert>
#include <algorithm>
#include <iostream>
using namespace std;
#define forn(i, n) for (int i = 0; i < (int)(n); i++)
typedef unsigned int uint;
uint cur = 0, a, b;
inline uint gen() {
cur = cur * a + b;
return cur >> 8;
}
int l, r;
inline void gen_seg() {
l = gen();
r = gen();
if (l > r)
swap(l, r);
}
const int N = 1 << 24;
int m, q;
uint x[N + 1];
int main() {
#define NAME "fastadd"
assert(freopen(NAME ".in", "r", stdin));
assert(freopen(NAME ".out", "w", stdout));
cin >> m >> q >> a >> b;
while (m--) {
uint add = gen();
gen_seg();
x[l] += add, x[r + 1] -= add;
}
uint y = 0, sum = 0;
forn(i, N + 1)
y += x[i], x[i] = sum, sum += y;
uint res = 0;
while (q--)
gen_seg(), res += x[r + 1] - x[l];
cout << res << endl;
return 0;
}