#include #include using namespace std; int readPosIntLn(){ int x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>10 || ( cnt==10 && fi>1) )); } else if(g=='\n'){ return x; } else { assert(false); } } } long long readPosLongLn(){ long long x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>19 || ( cnt==19 && fi>1) )); } else if(g=='\n'){ return x; } else { assert(false); } } } int readPosIntSpace(){ int x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>10 || ( cnt==10 && fi>1) )); } else if(g==' '){ return x; } else { assert(false); } } } long long readPosLongSpace(){ long long x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>19 || ( cnt==19 && fi>1) )); } else if(g==' '){ return x; } else { assert(false); } } } int gett(long long r,long long c,long long N){ if(r>=N/2 && c>=N/2){ return 1; } if(r==N/2 || c==N/2){ return 0; } if(r>N/2){ r-=N/2+1; } if(c>N/2){ c-=N/2+1; } return gett(r,c,N/2); } int main(){ int T; T=readPosIntLn(); assert(1<=T && T<=10000); //cin>>T; while(T--){ long long r1,c1,r2,c2; //cin>>r1>>r2>>c1>>c2; r1=readPosLongSpace(); r2=readPosLongSpace(); c1=readPosLongSpace(); c2=readPosLongLn(); assert(1<=r1 && r1<= 1000000000000000000ll); assert(1<=r2 && r2<= 1000000000000000000ll); assert(r1<=r2); assert(1<=c1 && c1<= 1000000000000000000ll); assert(1<=c2 && c2<= 1000000000000000000ll); assert(c1<=c2); r1--; r2--; c1--; c2--; long long sol=0; for(int i=0;i<60;i++){ int g=0; g^=gett((1ll<<62) -(1ll<