#include <iostream>
#include <bits/stdc++.h>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int q;
int turn;
int chessboard[10][9];
int isput[10][9];
void return_(){
chessboard[0][0]=03;
chessboard[0][1]=04;
chessboard[0][2]=05;
chessboard[0][3]=06;
chessboard[0][4]=07;
chessboard[0][5]=06;
chessboard[0][6]=05;
chessboard[0][7]=04;
chessboard[0][8]=03;
chessboard[1][0]=-1;
chessboard[1][1]=-1;
chessboard[1][2]=-1;
chessboard[1][3]=-1;
chessboard[1][4]=-1;
chessboard[1][5]=-1;
chessboard[1][6]=-1;
chessboard[1][7]=-1;
chessboard[1][8]=-1;
chessboard[2][0]=02;
chessboard[2][1]=-1;
chessboard[2][2]=-1;
chessboard[2][3]=-1;
chessboard[2][4]=-1;
chessboard[2][5]=-1;
chessboard[2][6]=-1;
chessboard[2][7]=-1;
chessboard[2][8]=02;
chessboard[3][0]=01;
chessboard[3][1]=-1;
chessboard[3][2]=01;
chessboard[3][3]=-1;
chessboard[3][4]=01;
chessboard[3][5]=-1;
chessboard[3][6]=01;
chessboard[3][7]=-1;
chessboard[3][8]=01;
chessboard[4][0]=-1;
chessboard[4][1]=-1;
chessboard[4][2]=-1;
chessboard[4][3]=-1;
chessboard[4][4]=-1;
chessboard[4][5]=-1;
chessboard[4][6]=-1;
chessboard[4][7]=-1;
chessboard[4][8]=-1;
chessboard[9][0]=13;
chessboard[9][1]=14;
chessboard[9][2]=15;
chessboard[9][3]=16;
chessboard[9][4]=17;
chessboard[9][5]=16;
chessboard[9][6]=15;
chessboard[9][7]=14;
chessboard[9][8]=13;
chessboard[8][0]=-1;
chessboard[8][1]=-1;
chessboard[8][2]=-1;
chessboard[8][3]=-1;
chessboard[8][4]=-1;
chessboard[8][5]=-1;
chessboard[8][6]=-1;
chessboard[8][7]=-1;
chessboard[8][8]=-1;
chessboard[7][0]=12;
chessboard[7][1]=-1;
chessboard[7][2]=-1;
chessboard[7][3]=-1;
chessboard[7][4]=-1;
chessboard[7][5]=-1;
chessboard[7][6]=-1;
chessboard[7][7]=-1;
chessboard[7][8]=12;
chessboard[6][0]=11;
chessboard[6][1]=-1;
chessboard[6][2]=11;
chessboard[6][3]=-1;
chessboard[6][4]=11;
chessboard[6][5]=-1;
chessboard[6][6]=11;
chessboard[6][7]=-1;
chessboard[6][8]=11;
chessboard[5][0]=-1;
chessboard[5][1]=-1;
chessboard[5][2]=-1;
chessboard[5][3]=-1;
chessboard[5][4]=-1;
chessboard[5][5]=-1;
chessboard[5][6]=-1;
chessboard[5][7]=-1;
chessboard[5][8]=-1;
isput[0][0]=1;
isput[0][1]=1;
isput[0][2]=1;
isput[0][3]=1;
isput[0][4]=1;
isput[0][5]=1;
isput[0][6]=1;
isput[0][7]=1;
isput[0][8]=1;
isput[1][0]=0;
isput[1][1]=0;
isput[1][2]=0;
isput[1][3]=0;
isput[1][4]=0;
isput[1][5]=0;
isput[1][6]=0;
isput[1][7]=0;
isput[1][8]=0;
isput[2][0]=1;
isput[2][1]=0;
isput[2][2]=0;
isput[2][3]=0;
isput[2][4]=0;
isput[2][5]=0;
isput[2][6]=0;
isput[2][7]=0;
isput[2][8]=1;
isput[3][0]=1;
isput[3][1]=0;
isput[3][2]=1;
isput[3][3]=0;
isput[3][4]=1;
isput[3][5]=0;
isput[3][6]=1;
isput[3][7]=0;
isput[3][8]=1;
isput[4][0]=0;
isput[4][1]=0;
isput[4][2]=0;
isput[4][3]=0;
isput[4][4]=0;
isput[4][5]=0;
isput[4][6]=0;
isput[4][7]=0;
isput[4][8]=0;
isput[9][0]=2;
isput[9][1]=2;
isput[9][2]=2;
isput[9][3]=2;
isput[9][4]=2;
isput[9][5]=2;
isput[9][6]=2;
isput[9][7]=2;
isput[9][8]=2;
isput[8][0]=0;
isput[8][1]=0;
isput[8][2]=0;
isput[8][3]=0;
isput[8][4]=0;
isput[8][5]=0;
isput[8][6]=0;
isput[8][7]=0;
isput[8][8]=0;
isput[7][0]=2;
isput[7][1]=0;
isput[7][2]=0;
isput[7][3]=0;
isput[7][4]=0;
isput[7][5]=0;
isput[7][6]=0;
isput[7][7]=0;
isput[7][8]=2;
isput[6][0]=2;
isput[6][1]=0;
isput[6][2]=2;
isput[6][3]=0;
isput[6][4]=2;
isput[6][5]=0;
isput[6][6]=2;
isput[6][7]=0;
isput[6][8]=2;
isput[5][0]=0;
isput[5][1]=0;
isput[5][2]=0;
isput[5][3]=0;
isput[5][4]=0;
isput[5][5]=0;
isput[5][6]=0;
isput[5][7]=0;
isput[5][8]=0;
}
int movex[2]={1,-1};
int movey[2]={1,-1};
//更新duckchess1.1:
//检测是否能到_____处(check1~check7)
bool canto(int x1,int y1,int x2,int y2){
switch(chessboard[x1][y1]%10)
{
case 1:
if((x1+1==x2&&y1==y2)||(x1-1==x2&&y1==y2)||(x1==x2&&y1+1==y2)||(x1==x2&&y1-1==y2)||(x1+1==x2&&y1+1==y2)||(x1+1==x2&&y1-1==y2)||(x1-1==x2&&y1+1==y2)||(x1-1==x2&&y1-1==y2))
{
return true;
}
break;
case 2:
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
if(x1+movex[i]*3==x2&&y1+movey[j]*2==y2&&!isput[x1+movex[i]*2][y1+movey[j]*1]&&!isput[x1+movex[i]*1][y1+movey[i]*0]){
return true;
}
if(x1+movex[i]*2==x2&&y1+movey[j]*3==y2&&!isput[x1+movex[i]*1][y1+movey[j]*2]&&!isput[x1+movex[i]*0][y1+movey[i]*1]){
return true;
}
}
}
break;
case 3:
if(x1<x2)
{
int i;
for(i=x1+1;i<x2&&isput[i][y1]==0;i++);
if(i==x2&&y1==y2)
return true;
}
else
{
int i;
for(i=x1-1;i>x2&&isput[i][y1]==0;i--);
if(i==x2&&y1==y2)
return true;
}
if(y1<y2)
{
int i;
for(i=y1+1;i<y2&&isput[x1][i]==0;i++);
if(i==y2&&x1==x2)
return true;
}
else{
int i;
for(i=y1-1;i>y2&&isput[x1][i]==0;i--);
if(i==y2&&x1==x2)
return true;
}
break;
case 4:
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
if(x1+movex[i]*2==x2&&y1+movey[j]*1==y2&&!isput[x1+movex[i]*1][y1+movey[j]*0]){
return true;
}
if(x1+movex[i]*1==x2&&y1+movey[j]*2==y2&&!isput[x1+movex[i]*0][y1+movey[j]*1]){
return true;
}
}
}
break;
case 5:
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
if(x1+movex[i]*2==x2&&y1+movey[j]*2==y2&&!isput[x1+movex[i]*1][y1+movey[j]*1]){
return true;
}
}
}
break;
case 6:
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
if(x1+movex[i]==x2&&y1+movey[j]==y2){
return true;
}
}
}
break;
case 7:
for(int i=0;i<2;i++){
for(int j=0;j<2;j++){
if(x1+movex[i]*1==x2&&y1+movey[j]*0==y2){
return true;
}
if(x1+movex[i]*0==x2&&y1+movey[j]*1==y2){
return true;
}
}
}
break;
}
return false;
}
bool jj()
{
for(int i=0;i<10;i++)
{
for(int j=0;j<9;j++)
{
if(chessboard[i][j]%10==7)
{
for(int v=0;v<10;v++)
{
for(int u=0;u<9;u++)
{
if(chessboard[v][u]!=-1&&isput[v][u]!=isput[i][j])
{
if(canto(v,u,i,j))
{
return true;
}
}
}
}
}
}
}
return false;
}
int main()
{
return_();
int q,now,x1,x2,y1,y2;
bool st=0,gone=0,fl=0;
cin>>q;
while(q--){
cin>>x1>>y1>>x2>>y2;
now=gone+1;
if(isput[x1][y1]!=now||st||isput[x2][y2]==now||!canto(x1,y1,x2,y2))
{
cout<<"Invalid command"<<endl;
continue;
}
fl=(chessboard[x2][y2]%10==7);
if(isput[x1][y1]==1)
{
cout<<"red ";
}
else
{
cout<<"blue ";
}
switch(chessboard[x1][y1]%10)
{
case 1:
cout<<"soldier;";
break;
case 2:
cout<<"duck;";
break;
case 3:
cout<<"car;";
break;
case 4:
cout<<"horse;";
break;
case 5:
cout<<"elephant;";
break;
case 6:
cout<<"guard;";
break;
case 7:
cout<<"captain;";
break;
}
if(isput[x2][y2])
{
if(isput[x2][y2]==1)
{
cout<<"red ";
}
else
{
cout<<"blue ";
}
switch(chessboard[x2][y2]%10)
{
case 1:
cout<<"soldier;";
break;
case 2:
cout<<"duck;";
break;
case 3:
cout<<"car;";
break;
case 4:
cout<<"horse;";
break;
case 5:
cout<<"elephant;";
break;
case 6:
cout<<"guard;";
break;
case 7:
cout<<"captain;";
break;
}
}
else
{
cout<<"NA;";
}
chessboard[x2][y2]=chessboard[x1][y1];
chessboard[x1][y1]=-1;
isput[x2][y2]=isput[x1][y1];
isput[x1][y1]=0;
if(!fl)
{
if(jj())
{
cout<<"yes;";
}
else
{
cout<<"no;";
}
}
else
{
cout<<"no;";
}
if(fl)
{
st=true;
cout<<"yes"<<endl;
}
else{
cout<<"no"<<endl;
}
gone=!gone;
}
return 0;
}