땅따먹기

아직 제출이 없습니다시간 제한0.5초메모리 제한512 MB

문제

각각 칸이 'A', 'X', 'O' 셋 중 하나로 주어진 N×MN \times M 보드가 주어진다.  플레이어는 'A'로 주어진 칸 중 하나에서 시작할 수 있으며, 처음 1×11 \times 1 크기의 말로 시작해 매 턴 다음 행동들을 순서대로 수행한다. 매 턴 두 행동을 모두 주어진 순서대로 수행해야 한다.

  1. 상하좌우 중 한 방향으로 말을 길이 1만큼 늘리기. 말을 늘릴 때 기존 말의 위치는 변하지 않고 해당 방향으로 직사각형 모양으로 크기가 커진다.
  2. 상하좌우 중 한 방향으로 말을 한 칸 이동하기.

예를 들어 가로 길이가 4, 세로 길이가 4인 말을 위쪽으로 길이 1만큼 늘리면 아래 그림과 같이 변한다.

행동을 수행하면서 플레이어의 말이 보드 밖이나 `X'를 포함하게 된다면 수행하지 못하고 종료한다.

플레이어가 원하는 'A'에서 시작하여 자유롭게 행동하여 0번 이상의 턴을 마친 뒤 플레이어의 말이 도달하거나 포함할 수 있는 모든 칸을 'Y'로, 이외 모든 칸을 'N'으로 표시하여 출력하여라. 만약 행동 1을 수행한 뒤 행동 2에서 'X'를 만난다면 행동 1에서 말이 포함한 칸은 도달하거나 포함한 것으로 취급하지 않는다.

입력

첫째 줄에 N,M,(1N,M50)N, M \\, (1 \leq N, M \leq 50) 이 주어진다.

이후 NN개의 줄에 걸쳐 MM칸의 정보가 'A', 'X', 'O' 셋 중 하나로 주어진다. 출발 지점 'A'는 적어도 하나 주어진다.

출력

NN줄에 걸쳐 각각 MM칸을 플레이어가 도달하거나 포함할 수 있다면 'Y', 없다면 'N'으로 바꿔 출력한다.