#include #include #include #include #define rep(i,s,t) for(int i=s;i<=t;i++) #define dwn(i,s,t) for(int i=s;i>=t;i--) using namespace std; inline int read() { int x=0,f=1;char c=getchar(); for(;!isdigit(c);c=getchar()) if(c=='-') f=-1; for(;isdigit(c);c=getchar()) x=x*10+c-'0'; return x*f; } typedef long long ll; 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 m1[1000006],m2[1000006]; void solve() { scanf("%d%d%d%d",&n,&m,&k,&seed); _X=seed; memset(m1,0,sizeof(m1)); memset(m2,0,sizeof(m2)); for (int i=1;i<=k;++i) { int x=get_rand(1,n),y=get_rand(1,m); m1[x]=m2[y]=1; } int ans1=0,ans2=0; rep(i,1,n) if(!m1[i]) ans1++; rep(i,1,m) if(!m2[i]) ans2++; printf("%d %d\n",ans1,ans2); } int main() { dwn(T,read(),1) solve(); return 0; }