#include <bits/stdc++.h>
using namespace std;
struct Q {
  deque<pair<int, int> > q;
  void add(pair<int, int> p) {
    while (not q.empty() and q.back() >= p) {
      q.pop_back();
    }
    q.push_back(p);
  }
  int get(int i) {
    while (q.front().second < i) {
      q.pop_front();
    }
    return q.front().first;
  }
};
int main() {
  ios_base::sync_with_stdio(0);
  Q q;
  int n, m, a, b;
  cin >> n >> m >> a >> b;
  vector<vector<int> > mat(n, vector<int>(m));
  int g, x, y, z;
  cin >> g >> x >> y >> z;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) {
      mat[i][j] = g;
      g = ((long long)(g)*x + y) % z;
    }
  }
  for (int i = 0; i < n; i++) {
    Q q;
    for (int j = 0; j < b - 1; j++) {
      q.add({mat[i][j], j});
    }
    for (int j = 0; j + b <= m; j++) {
      q.add({mat[i][j + b - 1], j + b - 1});
      mat[i][j] = q.get(j);
    }
  }
  for (int j = 0; j + b <= m; j++) {
    Q q;
    for (int i = 0; i < a - 1; i++) {
      q.add({mat[i][j], i});
    }
    for (int i = 0; i + a <= n; i++) {
      q.add({mat[i + a - 1][j], i + a - 1});
      mat[i][j] = q.get(i);
    }
  }
  long long res = 0;
  for (int i = 0; i + a <= n; i++) {
    for (int j = 0; j + b <= m; j++) {
      res += mat[i][j];
    }
  }
  cout << res << '\n';
}
