카드 게임
시간 제한1초메모리 제한1024 MB
앨리스와 밥이 번갈아 카드를 골라, 색에 맞는 대각선으로 이어진 카드를 모두 제거합니다. 앨리스가 먼저 시작할 때 이기는지 판별합니다.
문제
앨리스와 밥은 격자판 위의 카드를 번갈아 가며 제거하는 게임을 합니다. 게임을 시작할 때 크기 격자판의 각 칸에는 카드가 하나씩 놓여 있고, 각 카드는 빨강, 검정, 초록 중 하나로 칠해져 있습니다. 격자판의 왼쪽 위 칸은 로, 오른쪽 아래 칸은 으로 나타냅니다.
앨리스와 밥은 격자판에 놓인 카드 중 하나를 고른 뒤, 아래 규칙에 따라 카드를 제거합니다.
- 고른 카드가 빨간색이면, 그 카드를 기준으로 기울기가 인 대각선 방향으로 이어진 '연결된 카드'를 모두 제거합니다.
- 고른 카드가 파란색이면, 그 카드를 기준으로 기울기가 인 대각선 방향으로 이어진 '연결된 카드'를 모두 제거합니다.
- 고른 카드가 초록색이면, 그 카드를 기준으로 두 대각선 방향 모두에서 이어진 '연결된 카드'를 모두 제거합니다.
'연결된 카드'란 고른 카드를 포함하여, 기울기가 또는 인 대각선을 따라 인접하게 연속으로 놓인 카드를 말합니다.
예를 들어 판의 상태가 그림 A.1과 같을 때 에 놓인 빨간 카드를 고른다고 합시다. 기울기가 인 대각선의 '연결된 카드'는 그림 A.1의 타원 안에 있는 카드이며, 이 카드들을 제거합니다. 즉 에서 대각선을 따라 양방향으로 움직일 때 지나가는 칸의 카드가 '연결된 카드'입니다. 다만 고른 칸에서 양방향으로 움직이다가 격자의 경계나 빈 칸을 만나면 이동을 멈춥니다.

그림 A.1. 의 빨간 카드에 대한 연결된 카드를 보여주는 예시
같은 방식으로, 판의 상태가 그림 A.2와 같을 때 에 놓인 파란 카드를 고른다고 합시다. 기울기가 인 대각선의 '연결된 카드'는 그림 A.2의 타원 안에 있는 카드이며, 이 카드들을 제거합니다.

그림 A.2. 의 파란 카드에 대한 연결된 카드를 보여주는 예시
그림 A.3은 에 놓인 초록 카드를 골랐을 때 제거되는 카드를 보여줍니다.

그림 A.3. 의 초록 카드에 대한 연결된 카드를 보여주는 예시
앨리스와 밥은 번갈아 가며 격자판에서 카드를 하나씩 고르고, 고른 카드의 색에 따라 위 규칙대로 연결된 카드를 제거합니다. 마지막 카드를 제거한 사람이 이깁니다. 남은 카드가 없어서 아무 카드도 제거할 수 없는 사람이 집니다. 두 사람 모두 이기는 방법을 잘 알고 있으며 최선을 다해 둡니다.
격자판의 크기와 각 카드의 색이 주어질 때, 앨리스가 먼저 시작하면 이길 수 있는지 판단하는 프로그램을 작성하세요.
입력
첫 줄에 두 정수 과 ()이 주어집니다. 은 격자판의 행 수, 은 열 수입니다. 이어지는 개 줄의 번째 줄에는 격자판 번째 행에 있는 개 카드의 색을 나타내는 길이 의 문자열이 주어집니다. 각 문자는 빨강이면 'R', 파랑이면 'B', 초록이면 'G'입니다.
출력
대문자 한 글자로 이루어진 한 줄을 출력합니다. 앨리스가 이기면 'W', 지면 'L'을 출력합니다.