문제
Apricot Rules LLC와 Banana Rocks Inc.라는 두 회사가 같은 데이터센터를 공유하고 있다. 데이터센터는 R행 C열의 행렬이며, 각 칸에는 서버 타워가 하나씩 있다. 각 타워에는 두 회사 중 정확히 한 회사의 지적 재산이 들어 있다.
처음에 두 회사는 서로 다른 회사에 배정된 인접한 두 칸 사이의 변(모서리)에 벽을 세웠다. 이렇게 하면 같은 회사에 속한 칸들이 상하좌우로 인접해 있을 때 서로 연결된 상태로 남게 된다. 또한 어떤 칸 x가 y와 (직접 또는 간접적으로) 연결된 어떤 칸과 연결되어 있다면, x와 y는 연결되어 있다고 정의한다. 이 정의에 따르면 같은 회사에 배정된 두 칸이 서로 연결되어 있지 않을 수도 있는데, 이는 받아들일 수 없었다.
두 회사는 두 칸이 대각선으로 인접할 때에도 직접 연결될 수 있도록, 칸의 꼭짓점을 통과하는 좁은 통로(hallway)를 만들기로 합의했다. (i, j)를 i행 j열의 칸이라고 하자. 어떤 꼭짓점 하나를 통해서는 좁은 통로를 최대 하나만 만들 수 있다. 즉, (i, j)와 (i + 1, j + 1)을 연결하거나, (i + 1, j)와 (i, j + 1)을 연결하거나, 혹은 둘 다 연결하지 않거나 중 하나만 가능하며, 두 쌍을 동시에 연결할 수는 없다. 물론 같은 회사에 배정된 칸들 사이에만 통로를 만들 수 있다.
각 칸이 어느 회사에 배정되었는지에 따라 A 또는 B로 라벨링된 행렬이 주어질 때,
대각선 인접 연결을 적절히 추가하여
모든 A 칸이 서로 연결되고,
모든 B 칸도 서로 연결되게 만드는 방법을 찾아라.
입력
입력의 첫 줄에는 테스트 케이스 수 T가 주어진다.
T개의 테스트 케이스가 이어진다.
각 테스트 케이스는 먼저 데이터센터 행렬의 행/열 수를 나타내는 두 정수 R, C가 주어진 한 줄로 시작한다.
그 다음 R줄이 이어지고, 각 줄에는 C개의 문자가 주어진다.
i번째 줄의 j번째 문자 Mi,j는
(i, j) 칸의 소유 회사를 나타내는 A 또는 B이다.
출력
각 테스트 케이스마다 먼저 Case #x: y 형식의 한 줄을 출력하라.
여기서 x는 (1부터 시작하는) 테스트 케이스 번호이고,
y는 대각선 연결을 적절히 배치하여 A 칸들이 서로 연결되고 B 칸들도 서로 연결되게 만들 수 없다면 IMPOSSIBLE,
가능하다면 POSSIBLE이다.
그리고 POSSIBLE을 출력한 경우에는,
길이가 C - 1인 문자열을 R - 1줄 추가로 출력하라.
이 문자들은 위에서 설명한 대로 유효한 배치를 나타내야 한다.
추가로 출력하는 i번째 줄의 j번째 문자는
(i, j)와 (i + 1, j + 1)을 연결한다면 \,
(i + 1, j)와 (i, j + 1)을 연결한다면 /,
둘 다 연결하지 않으면 .이어야 한다.
예제
3
2 2
AB
BA
2 3
AAB
ABB
3 4
BBAA
BABA
BBAA
Case #1: IMPOSSIBLE
Case #2: POSSIBLE
..
Case #3: POSSIBLE
//\
.//