가로/세로 광선 발사기를 90도 회전해 모든 빈 칸에 빛이 지나가고 어떤 발사기도 빛에 맞지 않게 하며, 사전순으로 가장 작은 격자를 출력한다.
보통5시뮬레이션그래프그리디구현아직 제출이 없습니다시간 제한5초메모리 제한512 MB조이는 긴 휴가를 떠나기로 하고 적외선 레이저 빔으로 동작하는 보안 시스템을 설치할 기술자를 불렀다. 기술자가 건네준 도면에는 집이 R행 C열의 단위 칸 격자로 그려져 있고, 각 칸에는 다음 중 하나가 들어 있다.
/: 칸의 왼쪽 아래 모서리와 오른쪽 위 모서리를 잇는 양면 거울.\: 칸의 왼쪽 위 모서리와 오른쪽 아래 모서리를 잇는 양면 거울.-: 바로 왼쪽 칸과 바로 오른쪽 칸으로 수평 빔을 쏘는 발사기. 그런 칸이 있을 때만 그 칸으로 쏜다.|: 바로 위 칸과 바로 아래 칸으로 수직 빔을 쏘는 발사기. 그런 칸이 있을 때만 그 칸으로 쏜다.#: 벽. 집의 바깥 둘레가 벽으로 둘러싸여 있다는 보장은 없다. 조이에게 보안 시스템이 필요한 이유다..: 빈 칸.빔은 직선으로 나아가고 빈 칸은 그대로 통과한다. 거울에 닿은 빔은 거울 면에서 90도 꺾여 계속 나아간다. 오른쪽으로 가던 빔이 /에 닿으면 위로 꺾이고, 위, 왼쪽, 아래로 가던 빔이 /에 닿으면 각각 오른쪽, 아래, 왼쪽으로 꺾인다. 오른쪽, 위, 왼쪽, 아래로 가던 빔이 \에 닿으면 각각 아래, 왼쪽, 위, 오른쪽으로 꺾인다. 빔은 벽에 닿거나 격자 밖으로 나가면 멈춘다. 빔끼리 교차해도 문제가 없다. 그러나 빔이 발사기에 닿으면, 그 빔을 쏜 발사기라도, 그 발사기는 파괴된다.
조이는 빈 칸마다 빔이 적어도 하나 지나가고 파괴되는 발사기는 하나도 없기를 바란다. 시스템은 이미 설치가 끝나서 조이가 손댈 수 있는 부분은 이미 놓인 발사기를 90도 돌리는 것뿐이다. 즉 발사기를 0개 이상 골라 -를 |로, |를 -로 바꿀 수 있다. 회전 횟수를 최소로 만들 필요는 없다.
조이가 목표를 이룰 수 있는지 판단하고, 이룰 수 있다면 그때의 격자를 출력하라.
첫 줄에 테스트 케이스의 수 T가 주어진다. 각 테스트 케이스의 첫 줄에는 격자의 행 수 R과 열 수 C가 주어진다. 이어서 C개의 문자로 이루어진 줄이 R개 주어지고, 각 문자는 /, \, -, |, #, . 중 하나이다.
제한
/, \, -, |, #, . 중 하나이다.-의 개수와 |의 개수를 더한 값은 1 이상 100 이하이다..이 적어도 하나 있다.각 테스트 케이스마다 Case #x: y 형식으로 한 줄을 출력한다. x는 1부터 시작하는 테스트 케이스 번호이고, y는 조이가 목표를 이룰 수 없으면 IMPOSSIBLE, 이룰 수 있으면 POSSIBLE이다. 이룰 수 있으면 그 줄 다음에 결과 격자를 C개의 문자로 이루어진 R개의 줄로 출력한다. 결과 격자는 입력 격자에서 - 0개 이상을 |로, | 0개 이상을 -로 바꾼 것이고 나머지 문자는 그대로 둔 것이다.
가능한 격자가 여러 개일 때는 사전순으로 가장 작은 격자를 출력한다. 격자는 R개의 줄을 위에서 아래로 이어 붙인 문자열로 보고 비교하며, 문자는 아스키 코드 순서로 비교한다. 따라서 -(45)가 |(124)보다 앞선다.