많은 퍼즐 변형은 해당하는 원래 장르보다 더 어려운 경향이 있습니다. 하지만 역설적으로, 두 글자를 더하면 더 짧아지는 단어가 있는 것처럼, 어떤 장르든 더 쉽게 만드는 변형도 있습니다.
— Freddie Hand
Grammy는 퍼즐의 달인입니다. 오늘 그녀는 “Scrabble” 퍼즐의 변형인 “Easy as Scrabble”을 풀고 있습니다.
퍼즐은 $n\times m$ 격자로 이루어집니다. 각 칸에는 대문자를 하나 채우거나 비워 두어야 합니다.
퍼즐 바깥에는 몇 가지 단서가 있습니다. 바깥 단서는 그 방향에서 보았을 때 처음으로 나오는 비어 있지 않은 칸의 글자를 나타냅니다. 또한 일부 칸에는 x 표시가 있을 수 있으며, 이는 그 칸을 비워 두어야 한다는 뜻입니다.
예를 들어 왼쪽 그림은 아직 풀지 않은 퍼즐을, 오른쪽 그림은 그 퍼즐의 한 해를 보여줍니다.
Grammy는 퍼즐의 해를 찾고 싶어 합니다. Grammy가 해를 찾도록 돕거나, 해가 존재하지 않음을 보고하세요.
입력
첫 번째 줄에는 정수 $n,m$ 2개 ($1\le n,m\le1000$)가 주어져 격자의 행 수와 열 수를 나타냅니다.
다음 줄에는 점 (.), 격자 위의 단서를 나타내는 $m$개의 문자 $U_i$, 그리고 점 (.)이 순서대로 주어집니다.
다음 $n$개 줄에는 각각 단서 $L_i$, $m$개의 문자 $c_{ij}$, 단서 $R_i$가 순서대로 주어지며, 격자 왼쪽의 단서, 격자 칸들, 격자 오른쪽의 단서를 나타냅니다.
다음 줄에는 점 (.), 격자 아래의 단서를 나타내는 $m$개의 문자 $D_i$, 그리고 점 (.)이 순서대로 주어집니다.
각 단서 $U_i,L_i,R_i,D_i$는 영어 대문자 또는 점 (.)입니다. 각 중앙 칸 $c_{ij}$는 x 또는 점 (.)입니다.
입력의 모든 점은 해당 위치가 비어 있음을 뜻합니다.
출력
해가 존재하지 않으면 한 줄에 NO를 출력하세요.
그렇지 않으면 첫 번째 줄에 YES를 출력하고, 이어서 퍼즐의 해를 나타내는 $n$개 줄을 출력하세요. 각 줄에는 $m$개의 문자가 있어야 합니다. 빈 칸은 각각 점으로 나타내야 합니다. 해가 여러 개이면 아무 해나 출력하세요.
중앙 칸에 주어진 x 문자는 점으로 바꿔야 함에 유의하세요.
단서 칸은 출력하면 안 된다는 점에도 유의하세요.
예제
입력 1
5 5 .CBA... ....x.. ..x...C A.....B B..x..A C...... .......
출력 1
YES CBA.. A.B.C .A.CB BC.A. ..CBA
입력 2
1 2 .... Nx.. ..O.
출력 2
NO