정사각형 타일 (Large)

각 테스트 케이스의 파란 칸을 겹치지 않는 2x2 타일로 모두 덮을 수 있는지 판단하고 완성된 그림이나 Impossible을 출력합니다.

쉬움3그리디행렬구현면접 대비아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

1x1 정사각형 타일을 격자 모양으로 빈틈없이 붙여 만든 기하학 그림을 판다. 예를 들어 다음과 같은 그림이 있다.

.##..
.####
.####
.##..

파란 타일은 #, 흰 타일은 .로 나타낸다. 다른 색은 쓰지 않는다.

파란색을 좋아하지 않는 손님은 그림의 파란 타일을 전부 빨간 타일로 바꿔 달라고 한다. 문제는 빨간 타일이 2x2 크기로만 나온다는 점이다.

파란 타일로만 이루어진 2x2 정사각형을 빨간 타일 한 장으로 덮을 수 있고, 이 작업을 원하는 만큼 반복한다. 빨간 타일은 다른 빨간 타일과 겹칠 수 없고, 흰 타일을 덮을 수 없으며, 그림 바깥으로 나갈 수 없다. 파란 타일은 한 장도 남기지 않고 모두 덮어야 한다. 위 그림은 다음과 같이 덮을 수 있다.

./\..
.\//\
./\\/
.\/..

빨간 타일 한 장은 왼쪽 위와 오른쪽 아래 칸의 / 두 개, 나머지 두 칸의 \ 두 개로 나타낸다.

파란색과 흰색으로 이루어진 그림이 주어진다. 이 방식으로 빨간색과 흰색 그림으로 바꿀 수 있는지 판정하고, 가능하면 그 그림을 그린다.

입력

첫 줄에 테스트 케이스의 개수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 줄에는 그림의 행 개수 RR과 열 개수 CC가 공백을 사이에 두고 주어진다. 다음 RR개의 줄에는 각각 정확히 CC개의 문자가 주어져 그림을 나타낸다. #는 파란 타일, .는 흰 타일이다.

제한

  • 1T501 \le T \le 50
  • 1R501 \le R \le 50
  • 1C501 \le C \le 50

출력

각 테스트 케이스마다 먼저 Case #x: 형식의 줄을 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이다.

파란 타일을 서로 겹치지 않는 빨간 타일로 모두 덮을 수 있으면, 완성된 그림을 RR개의 줄에 한 줄마다 CC개의 문자로 출력한다. 빨간 타일은 /\로, 흰 타일은 .로 나타낸다. 덮는 방법이 있으면 그 방법은 하나뿐이므로 정답 그림도 하나뿐이다.

덮을 수 없으면 그림 대신 Impossible 한 줄을 출력한다.