#include using namespace std; typedef long long ll; const int maxn = 1000000+5; const int INF = 0x3f3f3f3f; const int mod = 1e9+7; 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), y[i]=get_rand(1,m); } bool fr[maxn]; bool fc[maxn]; int main() { //freopen("in","r",stdin); //freopen("out","w",stdout); int t;scanf("%d",&t); while(t--) { Init(); memset(fr,0,sizeof fr); memset(fc,0,sizeof fc); for(int i=1;i<=k;++i) { fr[x[i]]=true; fc[y[i]]=true; } int r=0; int c=0; for(int i=1;i<=n;++i) if(fr[i]==false) r++; for(int i=1;i<=m;++i) if(fc[i]==false) c++; printf("%d %d\n",r,c); } return 0; }