#include <bits/stdc++.h>
typedef long long LL;
typedef unsigned long long ULL;
typedef long double LD;
#define mem(arr,val) memset((arr),(val),(sizeof(arr)))
using namespace std;
int q,xs,ys,xt,yt,s[2] = {1,-1};
char duck[10][9];
bool ed = false,now = false;
void init()
{
duck[0][0] = 'c';
duck[0][1] = 'm';
duck[0][2] = 'x';
duck[0][3] = 's';
duck[0][4] = 'w';
duck[0][5] = 's';
duck[0][6] = 'x';
duck[0][7] = 'm';
duck[0][8] = 'c';
duck[2][8] = 'y';
duck[2][0] = 'y';
duck[3][0] = duck[3][2] = duck[3][4] = duck[3][6] = duck[3][8] = 'b';
duck[9][0] = 'C';
duck[9][1] = 'M';
duck[9][2] = 'X';
duck[9][3] = 'S';
duck[9][4] = 'W';
duck[9][5] = 'S';
duck[9][6] = 'X';
duck[9][7] = 'M';
duck[9][8] = 'C';
duck[7][0] = 'Y';
duck[7][8] = 'Y';
duck[6][0] = duck[6][2] = duck[6][4] = duck[6][6] = duck[6][8] = 'B';
}
bool captain(int xs,int ys,int xt,int yt)
{
if((abs(xs-xt) == 1 && yt == ys)
|| (xt == xs && abs(ys-yt) == 1)) return true;
else return false;
}
bool guard(int xs,int ys,int xt,int yt)
{
if(abs(xs-xt) == 1 && abs(ys-yt) == 1) return true;
else return false;
}
bool soldier(int xs,int ys,int xt,int yt)
{
if((abs(xs-xt) == 1 && yt == ys)
|| (xt == xs && abs(ys-yt) == 1)
|| (abs(xs-xt) == 1 && abs(ys-yt) == 1)) return true;
else return false;
}
bool car(int xs,int ys,int xt,int yt)
{
if(xs != xt && ys != yt) return false;
if(xs == xt)
{
for(int i = ys+1;i <= yt;++i)
if(isalpha(duck[xs][i])) return false;
return true;
}
if(ys == yt)
{
for(int i = xs+1;i <= xt;++i)
if(isalpha(duck[i][ys])) return false;
return true;
}
}
bool elephant(int xs,int ys,int xt,int yt)
{
for(int i = 0;i < 2;++i)
for(int j = 0;j < 2;++j)
if(!isalpha(duck[xs+s[i]][ys+s[j]]) && xt == xs+s[i]*2 && yt == ys+s[j]*2) return true;
return false;
}
bool horse(int xs,int ys,int xt,int yt)
{
for(int i = 0;i < 2;++i)
for(int j = 0;j < 2;++j)
{
if(!isalpha(duck[xs+s[i]][ys]) && xt == xs+s[i]*2 && yt == ys+s[j]) return true;
if(!isalpha(duck[xs][ys+s[j]]) && xt == xs+s[i] && yt == ys+s[j]*2) return true;
}
return false;
}
bool ducker(int xs,int ys,int xt,int yt)
{
for(int i = 0;i < 2;++i)
for(int j = 0;j < 2;++j)
{
if(!isalpha(duck[xs+s[i]*2][ys+s[j]]) && !isalpha(duck[xs+s[i]][ys]) && xt == xs+s[i]*3 && yt == ys+s[j]*2) return true;
if(!isalpha(duck[xs+s[i]][ys+s[j]*2]) && !isalpha(duck[xs][ys+s[j]]) && xt == xs+s[i]*2 && yt == ys+s[i]*3) return true;
}
return false;
}
bool judge(bool p,int xs,int ys,int xt,int yt)
{
if(ed) return false;
if(!p)
{
if(!islower(duck[xs][ys]) || islower(duck[xt][yt])) return false;
if(duck[xs][ys] == 'w') return captain(xs,ys,xt,yt);
if(duck[xs][ys] == 's') return guard(xs,ys,xt,yt);
if(duck[xs][ys] == 'x') return elephant(xs,ys,xt,yt);
if(duck[xs][ys] == 'm') return horse(xs,ys,xt,yt);
if(duck[xs][ys] == 'c') return car(xs,ys,xt,yt);
if(duck[xs][ys] == 'y') return ducker(xs,ys,xt,yt);
if(duck[xs][ys] == 'b') return soldier(xs,ys,xt,yt);
}
else
{
if(!isupper(duck[xs][ys]) || isupper(duck[xt][yt])) return false;
if(duck[xs][ys] == 'W') return captain(xs,ys,xt,yt);
if(duck[xs][ys] == 'S') return guard(xs,ys,xt,yt);
if(duck[xs][ys] == 'X') return elephant(xs,ys,xt,yt);
if(duck[xs][ys] == 'M') return horse(xs,ys,xt,yt);
if(duck[xs][ys] == 'C') return car(xs,ys,xt,yt);
if(duck[xs][ys] == 'Y') return ducker(xs,ys,xt,yt);
if(duck[xs][ys] == 'B') return soldier(xs,ys,xt,yt);
}
}
void get_piece_now(int x,int y)
{
if(islower(duck[x][y])) printf("red ");
else printf("blue ");
if(duck[x][y] == 'c' || duck[x][y] == 'C') printf("car;");
if(duck[x][y] == 'm' || duck[x][y] == 'M') printf("horse;");
if(duck[x][y] == 'x' || duck[x][y] == 'X') printf("elephant;");
if(duck[x][y] == 's' || duck[x][y] == 'S') printf("guard;");
if(duck[x][y] == 'w' || duck[x][y] == 'W') printf("captain;");
if(duck[x][y] == 'y' || duck[x][y] == 'Y') printf("duck;");
if(duck[x][y] == 'b' || duck[x][y] == 'B') printf("soldier;");
}
bool will_end()
{
int xblue,yblue,xred,yred;
for(int i = 0;i <= 9;++i)
for(int j = 0;j <= 8;++j)
{
if(duck[i][j] == 'W') xblue = i,yblue = j;
if(duck[i][j] == 'w') xred = i,yred = j;
}
for(int i = 0;i <= 9;++i)
for(int j = 0;j <= 8;++j)
{
if(isupper(duck[i][j]) && judge(1,i,j,xred,yred)) return true;
if(islower(duck[i][j]) && judge(0,i,j,xblue,yblue)) return true;
}
}
bool is_end()
{
bool blue = false,red = false;
for(int i = 0;i <= 9;++i)
for(int j = 0;j <= 8;++j)
{
if(duck[i][j] == 'w') red = true;
if(duck[i][j] == 'W') blue = true;
}
return !(red&&blue);
}
int main(int argc,char *argv[])
{
init();
scanf("%d",&q);
for(int i = 1;i <= q;++i)
{
scanf("%d%d%d%d",&xs,&ys,&xt,&yt);
if(!judge(now,xs,ys,xt,yt)) {puts("Invalid command");continue;}
now = !now;
get_piece_now(xs,ys);
if(!isalpha(duck[xt][yt])) printf("NA;");
else get_piece_now(xt,yt);
duck[xt][yt] = duck[xs][ys];
if(will_end()) printf("yes;");
else printf("no;");
duck[xs][ys] = '0';
if(is_end()) {printf("yes\n");ed = true;}
else printf("no\n");
}
return 0;
}