#include #include #include #include using namespace std; const int MAXN=1e6+7; bool visx[MAXN]; bool visy[MAXN]; int sum1,sum2; const int _K=50268147,_B=6082187,_P=100000007; int _X; inline int get_rand(int _l,int _r) { _X=((long long)_K*_X+_B)%_P; return _X%(_r-_l+1)+_l; } int n,m,k,seed; int x[1000006],y[1000006]; void Init() { scanf("%d%d%d%d",&n,&m,&k,&seed); _X=seed; for (int i=1; i<=k; ++i) { x[i]=get_rand(1,n); if(x[i]>=1&&x[i]<=n) { if(!visx[x[i]]) { visx[x[i]]=1; sum1++; } } y[i]=get_rand(1,m); if(y[i]>=1&&y[i]<=m) { if(!visy[y[i]]) { visy[y[i]]=1; sum2++; } } } } int main() { int t; scanf("%d",&t); while(t--) { memset(visx,0,sizeof(visx)); memset(visy,0,sizeof(visy)); sum1=0; sum2=0; Init(); printf("%d %d\n",n-sum1,m-sum2); } return 0; }