#include using namespace std; void king(int x, int y, char** a, int n){ a[x][y] = '.'; if ((x-1 >= 0) && (y-1 >= 0) && a[x-1][y-1] == 'K'){ king(x-1, y-1, a, n); } if ((x-1 >= 0) && a[x-1][y] == 'K'){ king(x-1, y, a, n); } if ((x-1 >= 0) && (y+1 < n) && a[x-1][y+1] == 'K'){ king(x-1, y+1, a, n); } if ((y-1 >= 0) && a[x][y-1] == 'K'){ king(x, y-1, a, n); } if ((y+1 < n) && a[x][y+1] == 'K'){ king(x, y+1, a, n); } if ((y-1 >= 0) && (x+1 < n) && a[x+1][y-1] == 'K'){ king(x+1, y-1, a, n); } if ((x+1 < n) && a[x+1][y] == 'K'){ king(x+1, y, a, n); } if ((y-1 >= 0) && (x+1 < n) && a[x+1][y-1] == 'K'){ king(x+1, y, a, n); } } void wking(int x, int y, char** a, int n){ a[x][y] = '.'; if ((x-1 >= 0) && (y-1 >= 0) && a[x-1][y-1] == 'K'){ wking(x-1, y-1, a, n); cout << x << ' ' << y << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x-1 >= 0) && a[x-1][y] == 'K'){ wking(x-1, y, a, n); cout << x << ' ' << y + 1 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x-1 >= 0) && (y+1 < n) && a[x-1][y+1] == 'K'){ wking(x-1, y+1, a, n); cout << x << ' ' << y + 2 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((y-1 >= 0) && a[x][y-1] == 'K'){ wking(x, y-1, a, n); cout << x + 1 << ' ' << y << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((y+1 < n) && a[x][y+1] == 'K'){ wking(x, y+1, a, n); cout << x + 1 << ' ' << y + 2 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((y-1 >= 0) && (x+1 < n) && a[x+1][y-1] == 'K'){ wking(x+1, y-1, a, n); cout << x + 2 << ' ' << y << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x+1 < n) && a[x+1][y] == 'K'){ wking(x+1, y, a, n); cout << x + 2 << ' ' << y + 1 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((y-1 >= 0) && (x+1 < n) && a[x+1][y-1] == 'K'){ wking(x+1, y, a, n); cout << x + 2 << ' ' << y << ' ' << x + 1 << ' ' << y + 1 << '\n'; } } void knight(int x, int y, char** a, int n){ a[x][y] = '.'; if ((x-2 >= 0) && (y-1 >= 0) && a[x-2][y-1] == 'N'){ knight(x-2, y-1, a, n); } if ((x-2 >= 0) && (y+1 < n) && a[x-2][y+1] == 'N'){ knight(x-2, y+1, a, n); } if ((x-1 >= 0) && (y+2 < n) && a[x-1][y+2] == 'N'){ knight(x-1, y+2, a, n); } if ((x-1 >= 0) && (y-2 >= 0) && a[x-1][y-2] == 'N'){ knight(x-1, y-2, a, n); } if ((x+1 < n) && (y-2 >= 0) && a[x+1][y-2] == 'N'){ knight(x+1, y-2, a, n); } if ((x+2 < n) && (y-1 >= 0) && a[x+2][y-1] == 'N'){ knight(x+2, y-1, a, n); } if ((x+2 < n) && (y+1 < n) && a[x+2][y+1] == 'N'){ knight(x+2, y+1, a, n); } if ((x+1 < n) && (y+2 < n) && a[x+1][y+2] == 'N'){ knight(x+1, y+2, a, n); } } void wknight(int x, int y, char** a, int n){ a[x][y] = '.'; if ((x-2 >= 0) && (y-1 >= 0) && a[x-2][y-1] == 'N'){ wknight(x-2, y-1, a, n); cout << x - 1 << ' ' << y << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x-2 >= 0) && (y+1 < n) && a[x-2][y+1] == 'N'){ wknight(x-2, y+1, a, n); cout << x - 1 << ' ' << y + 2 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x-1 >= 0) && (y+2 < n) && a[x-1][y+2] == 'N'){ wknight(x-1, y+2, a, n); cout << x << ' ' << y + 3 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x-1 >= 0) && (y-2 >= 0) && a[x-1][y-2] == 'N'){ wknight(x-1, y-2, a, n); cout << x << ' ' << y - 1 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x+1 < n) && (y-2 >= 0) && a[x+1][y-2] == 'N'){ wknight(x+1, y-2, a, n); cout << x + 2 << ' ' << y - 1 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x+2 < n) && (y-1 >= 0) && a[x+2][y-1] == 'N'){ wknight(x+2, y-1, a, n); cout << x + 3 << ' ' << y << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x+2 < n) && (y+1 < n) && a[x+2][y+1] == 'N'){ wknight(x+2, y+1, a, n); cout << x + 3 << ' ' << y + 2 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } if ((x+1 < n) && (y+2 < n) && a[x+1][y+2] == 'N'){ wknight(x+1, y+2, a, n); cout << x + 2 << ' ' << y + 3 << ' ' << x + 1 << ' ' << y + 1 << '\n'; } } int main() { int n; char c; cin >> n >> c; char** a = new char*[n]; char** b = new char*[n]; for (int i = 0; i < n; ++i){ a[i] = new char[n]; b[i] = new char[n]; } for (int i = 0; i < n; ++i){ for (int j = 0; j < n; ++j){ cin >> a[i][j]; b[i][j] = a[i][j]; } } for (int i = 0; i < n; ++i){ for (int j = 0; j < n; ++j){ cout << a[i][j]; } cout << endl; } int startx, starty; for (int i = 0; i < n; ++i){ for (int j = 0; j < n; ++j){ if (a[i][j] != '.'){ startx = i; starty = j; } } } switch (c) { case 'K': king(startx, starty, a, n); break; case 'N': knight(startx, starty, a, n); break; case 'B': king(startx, starty, a, n); break; case 'Q': king(startx, starty, a, n); break; case 'R': king(startx, starty, a, n); break; } bool ans = true; for (int i = 0; i < n; ++i){ for (int j = 0; j < n; ++j){ if (a[i][j] != '.'){ ans = false; } } } if (ans){ cout << "YES\n"; switch (c) { case 'K': wking(startx, starty, b, n); break; case 'N': wknight(startx, starty, b, n); break; case 'B': king(startx, starty, b, n); break; case 'Q': king(startx, starty, b, n); break; case 'R': king(startx, starty, b, n); break; } } else { cout << "NO\n"; } return 0; }