매의 급강하

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

문제

동물원 원장이 말했다. "고속 카메라가 하필 가장 나쁜 순간에 고장 났습니다. 시속 250km로 땅을 향해 내리꽂는 매를 담은 장면이라 홍보 사진으로 쓰고 싶었어요. 가을 나무를 배경에 두면 잘 어울릴 텐데, 카메라가 망가지기 직전에 잡은 마지막 프레임에서도 매가 너무 높이 있습니다."

"포토샵으로 매를 오려서 아래로 내리면 됩니다." 매 조련사가 말했다. "흔한 사진 보정입니다."

"부자연스러울 겁니다." 원장이 반박했다. "손댄 티가 나는 사진을 공개할 수는 없어요."

"오히려 자연스럽습니다." 조련사가 답했다. "저 속도에서 매는 자세를 거의 바꾸지 않습니다. 연속된 몇 프레임 동안 사진 속 실루엣 모양은 사실상 그대로입니다. 그러니 인위적으로 아래로 옮겨도 촬영 중에 실제로 일어난 상황을 아주 잘 근사합니다."

원장은 잠시 망설이다가 이 제안을 받아들였다.

카메라가 남긴 마지막 두 프레임이 주어진다. 두 프레임 모두에 매의 실루엣이 들어 있다. 배경은 두 프레임에서 완전히 같고 실루엣의 위치만 다르다. 매는 일정한 속도로 움직이고 프레임 사이의 시간 간격도 일정하다. 매의 속도와 카메라의 속도에 맞춰 실루엣 위치를 옮긴 다음 프레임을 복원하라. 새 프레임의 배경은 앞의 두 프레임과 같다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 MM, NN (2M,N10002 \le M, N \le 1000)과 작은따옴표로 감싼 출력 가능한 ASCII 문자 CC가 공백으로 구분되어 주어진다. 이어서 MM개의 줄, 빈 줄 하나, 다시 MM개의 줄이 온다. 앞의 MM줄이 첫 번째 프레임이고 뒤의 MM줄이 두 번째 프레임이다. 빈 줄이 아닌 각 줄은 정확히 NN개의 출력 가능한 ASCII 문자로 이루어진 문자열이고, 문자 하나가 원본 프레임의 픽셀 하나를 나타낸다.

두 프레임 모두 매의 실루엣 전체를 담고 있다. 두 프레임에서 실루엣에 속하는 픽셀은 모두 문자 CC이고, 실루엣에 속하지 않는 픽셀은 모두 CC가 아닌 문자다. 두 프레임의 실루엣 픽셀은 일부라도 겹치지 않는다. 즉 첫 번째 프레임의 실루엣 픽셀 좌표 중에 두 번째 프레임의 실루엣 픽셀 좌표와 같은 것은 없다. 두 실루엣의 모양은 서로 같다. 한 프레임의 실루엣을 가로나 세로로 몇 픽셀 평행이동하면 다른 프레임의 실루엣 위치와 정확히 일치한다. 실루엣은 회전하지 않는다. 기술적인 이유로 실루엣 이미지가 연결되어 있지 않을 수도 있어서, 한 프레임 안에서 서로 떨어진 여러 영역으로 나뉠 수 있다.

출력 가능한 ASCII 문자는 느낌표(!, 십진 ASCII 코드 33)부터 물결표(~, 십진 ASCII 코드 126)까지의 문자다.

테스트 케이스 사이에는 빈 줄이 하나씩 있다. 입력의 끝은 0 0 ' ' 한 줄로 표시한다.

출력

각 테스트 케이스마다 NN개의 문자로 이루어진 MM개의 줄로 프레임 하나를 출력한다. 이 프레임은 두 입력 프레임을 바탕으로 매의 움직임을 그대로 외삽한 결과다. 두 번째 입력 프레임의 실루엣이 첫 번째 입력 프레임에 대해 가로로, 세로로 몇 픽셀 옮겨져 있다면, 결과 프레임의 실루엣은 두 번째 프레임에 대해 같은 픽셀 수만큼 가로로, 세로로 옮겨져 있어야 한다. 매의 실루엣이 프레임에 일부만 나타나거나 아예 나타나지 않을 수도 있다. 각 테스트 케이스 뒤에 빈 줄을 하나 출력한다.