#include "iostream"
#include
#include
#include
#include
#include "math.h"
using namespace std;
char qp[10][10]; //棋盘
int flag[10][10]; //标记可添加棋子的位置
char qz; //当前出子的颜色
char fz(char c) //调换棋子颜色
{
if(c=='B')
return 'W';
if(c=='W')
return 'B';
return '-';
}
void l() //可用位置
{
for(int i=1; i
{
for(int j=1; j
{
if(qp[i][j]=='-')
{
if(i-2>0&&qp[i-1][j]==fz(qz)&&qp[i-2][j]==qz)
{
flag[i][j]=1;
}
else if(i+2
{
flag[i][j]=1;
}
else if(j-2>0&&qp[i][j-1]==fz(qz)&&qp[i][j-2]==qz)
{
flag[i][j]=1;
}
else if(j+2
{
flag[i][j]=1;
}
else if(i-2>0&&j-2>0&&qp[i-1][j-1]==fz(qz)&&qp[i-2][j-2]==qz)
{
flag[i][j]=1;
}
else if(i-2>0&&j+2
{
flag[i][j]=1;
}
else if(i+20&&qp[i+1][j-1]==fz(qz)&&qp[i+2][j-2]==qz)
{
flag[i][j]=1;
}
else if(i+2<9&&j+2<9&&qp[i+1][j+1]==fz(qz)&&qp[i+2][j+2]==qz)
{
flag[i][j]=1;
}
}
}
}
}
void m() //添加棋子
{
l();
char x1,y1;
int x,y; //位置
int b=0,w=0; //黑棋个数 白棋个数
char c;
scanf("%c%c",&x1,&y1);
x = x1-'0';
y = y1-'0';
if(flag[x][y]) //棋子颜色可用
{
c = qz;
}
else //棋子颜色翻转
{
c = fz(qz);
}
qp[x][y] = c;
if(x-2>0&&qp[x-1][y]==fz(c)&&qp[x-2][y]==c)
{
qp[x-1][y]=c;
}
if(x+2
{
qp[x+1][y]=c;
}
if(y-2>0&&qp[x][y-1]==fz(c)&&qp[x][y-2]==c)
{
qp[x][y-1]=c;
}
if(y+2
{
qp[x][y+1]=c;
}
if(x-2>0&&y-2>0&&qp[x-1][y-1]==fz(c)&&qp[x-2][y-2]==c)
{
qp[x-1][y-1]=c;
}
if(x-2>0&&y+2
{
qp[x-1][y+1]=c;
}
if(x+20&&qp[x+1][y-1]==fz(c)&&qp[x+2][y-2]==c)
{
qp[x+1][y-1]=c;
}
if(x+2<9&&y+2<9&&qp[x+1][y+1]==fz(c)&&qp[x+2][y+2]==c)
{
qp[x+1][y+1]=c;
}
for(int i=1; i<9; i++)
{
for(int j=1; j<9; j++)
{
if(qp[i][j]=='W')
w++;
else if(qp[i][j]=='B')
b++;
}
}
printf("Black - %2d White - %2d\n",b,w);
}
int main()
{
//freopen("in.txt","r",stdin);
int num;
char command; //命令
scanf("%d",&num);
while(num--)
{
for(int i=1; i<9; i++)
{
getchar();
for(int j=1; j<9; j++)
scanf("%c",&qp[i][j]);
}
/*for(int i=1;i<9;i++){
for(int j=1;j<9;j++)
printf("%c",qp[i][j]);
printf("\n");
}*/
getchar();
scanf("%c",&qz);
while(1)
{
memset(flag,0,sizeof(flag));
getchar();
scanf("%c",&command);
if(command=='Q')
{
for(int i=1; i<9; i++)
{
for(int j=1; j<9; j++)
{
printf("%c",qp[i][j]);
}
printf("\n");
}
if(num != 0)
printf("\n");
break;
}
else if(command=='L') //可用位置
{
int lnum = 0,fl = 0;
l();
for(int i=1; i<9; i++)
{
for(int j=1; j<9; j++)
{
if(flag[i][j]){
if(fl==0)
printf("(%d,%d)",i,j);
else
printf(" (%d,%d)",i,j);
lnum++;fl++;
}
}
}
if(lnum == 0){
printf("No legal move.");
qz = fz(qz);
}
printf("\n");
}
else if(command=='M') //(x,y)添加棋子
{
m();
qz = fz(qz);
}
}
}
return 0;
}