#include #include #include #include #include #include #include using namespace std; #define N 50009 int R,C,ER,EC,num; int map1[505][505]; int map2[505][505]; int vis[505][505]; struct Point { int x,y,f; Point(int _x,int _y,int _f){x=_x;y=_y;f=_f;} }; void init() { scanf("%d%d%d%d",&R,&C,&ER,&EC); memset(vis,0,sizeof(vis)); num=0; for(int i=0;i<2*R-1;i++) { if(i&1) { for(int j=0;j0&&map2[s.x][s.y-1]==0) { s.y--; s.f=1; } else if(s.x+10&&map1[s.x-1][s.y]==0) { s.x--; s.f=2; } } else if(s.f==1) { if(s.x>0&&map1[s.x-1][s.y]==0) { s.x--; s.f=2; } else if(s.y>0&&map2[s.x][s.y-1]==0) { s.y--; s.f=1; } else if(s.x+10&&map1[s.x-1][s.y]==0) { s.x--; s.f=2; } else if(s.y>0&&map2[s.x][s.y-1]==0) { s.y--; s.f=1; } else if(s.x+10&&map1[s.x-1][s.y]==0) { s.x--; s.f=2; } else if(s.y>0&&map2[s.x][s.y-1]==0) { s.y--; s.f=1; } } } } void solve() { Point s=Point(0,ER,0); Point ss=Point(R-1,EC,2); dfs(s,ss); dfs(ss,s); if(num==R*C) puts("YES"); else puts("NO"); } int main() { int Case; scanf("%d",&Case); while(Case--) { init(); solve(); } return 0; }