/**
 * 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;
}