import math
import sys
import collections
sys.setrecursionlimit(10000)

class Vrchol:
    sousedi = []
    x, y = 0, 0
    seen = False
    index = 0

line = input().split(" ")
N = int(line[0])
excavator = line[1] #R Q B N K

mapa = [[False]*N for i in range(N)]
vrcholy = []
index = 0
for j in range(N):
    line = input()
    i = 0
    for character in line:
        if character != '.':
            mapa[i][j] = Vrchol()
            mapa[i][j].sousedi = []
            mapa[i][j].x = i
            mapa[i][j].y = j
            mapa[i][j].index = index
            index = index + 1
            vrcholy.append(mapa[i][j])
        i = i + 1

if excavator == 'R':
    for i in range(len(vrcholy)):
        for j in range(i+1,len(vrcholy)):
            if vrcholy[i].x == vrcholy[j].x or vrcholy[i].y == vrcholy[j].y:
                vrcholy[i].sousedi.append(vrcholy[j])
                vrcholy[j].sousedi.append(vrcholy[i])
elif excavator == 'Q':
    for i in range(len(vrcholy)):
        for j in range(i+1,len(vrcholy)):
            X = vrcholy[i].x - vrcholy[j].x
            Y = vrcholy[i].y - vrcholy[j].y
            if vrcholy[i].x == vrcholy[j].x or vrcholy[i].y == vrcholy[j].y or X == Y or X == -Y:
                vrcholy[i].sousedi.append(vrcholy[j])
                vrcholy[j].sousedi.append(vrcholy[i])
elif excavator == 'B':
    for i in range(len(vrcholy)):
        for j in range(i+1,len(vrcholy)):
            X = vrcholy[i].x - vrcholy[j].x
            Y = vrcholy[i].y - vrcholy[j].y
            if X == Y or X == -Y:
                vrcholy[i].sousedi.append(vrcholy[j])
                vrcholy[j].sousedi.append(vrcholy[i])
elif excavator == 'N':
    for i in range(len(vrcholy)):
        for j in range(i+1,len(vrcholy)):
            X = vrcholy[i].x - vrcholy[j].x
            Y = vrcholy[i].y - vrcholy[j].y
            if (abs(X) == 2 and abs(Y) == 1) or (abs(X) == 1 and abs(Y) == 2):
                vrcholy[i].sousedi.append(vrcholy[j])
                vrcholy[j].sousedi.append(vrcholy[i])
elif excavator == 'K':
    for i in range(len(vrcholy)):
        for j in range(i+1,len(vrcholy)):
            if abs(vrcholy[i].x - vrcholy[j].x) <= 1 and abs(vrcholy[i].y - vrcholy[j].y) <= 1:
                vrcholy[i].sousedi.append(vrcholy[j])
                vrcholy[j].sousedi.append(vrcholy[i])

moves = []

def pruchod(last, index):
    global vrcholy, moves
    vrcholy[index].seen = True
    for s in vrcholy[index].sousedi:
        if s.seen:
            continue
        pruchod(index, s.index)
    if last != None:
        moves.append([vrcholy[index].y+1, vrcholy[index].x+1, vrcholy[last].y+1, vrcholy[last].x+1])

pruchod(None, 0)

for v in vrcholy:
    if not v.seen:
        print("NO")
        exit()

print("YES")
for m in moves:
    print(' '.join(map(str, m)))

"""
V = len(vrcholy)
removed = [False]*V
pocet = V
moves = []
def hledani():
    global pocet, V, removed, vrcholy, moves
    if pocet == 1:
        print("YES")
        for m in moves:
            print(' '.join(map(str,m)))
        exit()
    for i in range(V): 
        if removed[i]:
            continue

        for s in vrcholy[i].sousedi:
            if not removed[s.index]:

                moves.append([vrcholy[i].x+1,vrcholy[i].y+1,s.x+1,s.y+1])

                pocet = pocet - 1
                removed[i] = True
                hledani()
                pocet = pocet + 1
                removed[i] = False
                moves.pop()

hledani()

print("NO")
"""