#include typedef long long ll; ll gi(){ ll x=0,f=1; char ch=getchar(); while(!isdigit(ch))f^=ch=='-',ch=getchar(); while(isdigit(ch))x=x*10+ch-'0',ch=getchar(); return f?x:-x; } std::mt19937 rnd(time(NULL)); #define rand rnd #define pr std::pair #define all(x) (x).begin(),(x).end() #define fi first #define se second templatevoid cxk(T&a,T b){a=a>b?a:b;} templatevoid cnk(T&a,T b){a=a>=1; } return ret; } templatevoid inc(Ta&a,Tb b){a=a+b>=mod?a+b-mod:a+b;} templatevoid dec(Ta&a,Tb b){a=a>=b?a-b:a+mod-b;} #endif int main(){ #ifdef LOCAL freopen("in.in","r",stdin); //freopen("out.out","w",stdout); #endif int T=gi(); while(T--){ int n=gi(),m=gi(),x1=gi(),x2=gi(); int xa=1-x1,ya=1+x1; int xb=n-x2,yb=n+x2; int d=(std::max(abs(xa-xb),abs(ya-yb))+1>>1)-1; if(x1==x2&&(n&1))++d; d=std::min(d,x1-1); d=std::min(d,m-x2); d=std::min(d,m-x1+n-1); d=std::min(d,x2-1+n-1); d=std::min(d,n-1); d=std::max(0,d); if(n==1)d=0; printf("%lld\n",1ll*d*d); } return 0; }