#include #include #define _K 50268147 #define _B 6082187 #define _P 100000007 int _X; int x[1000006],y[1000006],map1[1000006],map2[1000006]; int get_rand(int _l,int _r) { _X=((long long)_K*_X+_B)%_P; return _X%(_r-_l+1)+_l; } int main() { int t,n,m,k,seed; scanf("%d",&t); while(t--) { memset(map1,0,sizeof(map1)); memset(map2,0,sizeof(map2)); scanf("%d%d%d%d",&n,&m,&k,&seed); _X=seed; for(int i=1;i<=k;i++) { x[i]=get_rand(1,n); map1[x[i]]=1; y[i]=get_rand(1,m); map2[y[i]]=1; } int s1=0,s2=0; for(int i=1;i<=n;i++) if(map1[i]==1) s1++; for(int i=1;i<=m;i++) if(map2[i]==1) s2++; printf("%d %d\n",n-s1,m-s2); } return 0; }