#include <iostream>
#include <cstring>
using namespace std;
const int N = 10;
char g[N][N];
bool st[N][N];
int T;
int ans;
int n,m;
int x,y;
int dx[]={-2,-1,1,2,2,1,-1,-2};
int dy[]={1,2,2,1,-1,-2,-2,-1};
void dfs(int x,int y,int cnt)
{
if(cnt==n*m)
{
ans++;
return ;
}
for(int i=0;i<8;i++)
{
int a=x+dx[i],b=y+dy[i];
if(a<0||a>=n||b<0||b>=m) continue;
if(st[a][b]) continue;
st[a][b]=true;
dfs(a,b,cnt+1);
st[a][b]=false;
}
}
int main()
{
cin >> T;
while(T--)
{
cin>>n>>m>>x>>y;
memset(st,0,sizeof st);
ans=0;
st[x][y]=true;
dfs(x,y,1);
cout<<ans<<endl;
}
return 0;
}