#include <bits/stdc++.h>
using namespace std;
const int N = 3010;
int g[N][N], h[N][N], n, m, a, b, g0, x, y, z;
int main() {
  cin >> n >> m >> a >> b;
  cin >> g0 >> x >> y >> z;
  for (int i = (1); i <= (n); ++i)
    for (int j = (1); j <= (m); ++j) {
      g[i][j] = g0;
      g0 = (1ll * g0 * x + y) % z;
    }
  for (int i = (1); i <= (n); ++i) {
    deque<int> que;
    for (int j = (1); j <= (m); ++j) {
      while (!que.empty() && que.front() < j - b + 1) que.pop_front();
      while (!que.empty() && g[i][que.back()] > g[i][j]) que.pop_back();
      que.push_back(j);
      if (j >= b) h[i][j - b + 1] = g[i][que.front()];
    }
  }
  long long ans = 0ll;
  for (int j = (1); j <= (m - b + 1); ++j) {
    deque<int> que;
    for (int i = (1); i <= (n); ++i) {
      while (!que.empty() && que.front() < i - a + 1) que.pop_front();
      while (!que.empty() && h[que.back()][j] > h[i][j]) que.pop_back();
      que.push_back(i);
      if (i >= a) ans += h[que.front()][j];
    }
  }
  cout << ans << endl;
  return 0;
}
