#include<bits/stdc++.h>
using namespace std;
int n,m,a,b;
long long x,y,z;
long long g[3006][3006],mini[3006][3006];
long long h[9000010];
long long sum;
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
cin>>n>>m>>a>>b;
cin>>h[0]>>x>>y>>z;
for(int i=1;i<=9000005;++i) h[i]=(h[i-1]*x+y)%z;
for(int i=1;i<=n;++i){
for(int j=1;j<=m;++j){
g[i][j]=h[(i-1)*m+j-1];
}
}
for(int i=1;i<=n;++i){
deque<int> dq;
for(int j=1;j<=m;++j){
while(!dq.empty()&&g[i][dq.back()]>=g[i][j]) dq.pop_back();
dq.push_back(j);
if(j>=b){
while(!dq.empty()&&dq.front()<=j-b) dq.pop_front();
mini[i][j-b+1]=g[i][dq.front()];
}
}
}
for(int i=1;i<=m-b+1;++i){
deque<int> dq;
for(int j=1;j<=n;++j){
while(!dq.empty()&&mini[dq.back()][i]>=mini[j][i]) dq.pop_back();
dq.push_back(j);
if(j>=a){
while(!dq.empty()&&dq.front()<=j-a) dq.pop_front();
sum+=mini[dq.front()][i];
}
}
}
cout<<sum;
return 0;
}
1271A - Suits | 259B - Little Elephant and Magic Square |
1389A - LCM Problem | 778A - String Game |
1382A - Common Subsequence | 1512D - Corrupted Array |
667B - Coat of Anticubism | 284B - Cows and Poker Game |
1666D - Deletive Editing | 1433D - Districts Connection |
2B - The least round way | 1324A - Yet Another Tetris Problem |
246B - Increase and Decrease | 22E - Scheme |
1566A - Median Maximization | 1278A - Shuffle Hashing |
1666F - Fancy Stack | 1354A - Alarm Clock |
1543B - Customising the Track | 1337A - Ichihime and Triangle |
1366A - Shovels and Swords | 919A - Supermarket |
630C - Lucky Numbers | 1208B - Uniqueness |
1384A - Common Prefixes | 371A - K-Periodic Array |
1542A - Odd Set | 1567B - MEXor Mixup |
669A - Little Artem and Presents | 691B - s-palindrome |