동물원 원장이 말했다. "고속 카메라가 하필 가장 나쁜 순간에 고장 났습니다. 시속 250km로 땅을 향해 내리꽂는 매를 담은 장면이라 홍보 사진으로 쓰고 싶었어요. 가을 나무를 배경에 두면 잘 어울릴 텐데, 카메라가 망가지기 직전에 잡은 마지막 프레임에서도 매가 너무 높이 있습니다."
"포토샵으로 매를 오려서 아래로 내리면 됩니다." 매 조련사가 말했다. "흔한 사진 보정입니다."
"부자연스러울 겁니다." 원장이 반박했다. "손댄 티가 나는 사진을 공개할 수는 없어요."
"오히려 자연스럽습니다." 조련사가 답했다. "저 속도에서 매는 자세를 거의 바꾸지 않습니다. 연속된 몇 프레임 동안 사진 속 실루엣 모양은 사실상 그대로입니다. 그러니 인위적으로 아래로 옮겨도 촬영 중에 실제로 일어난 상황을 아주 잘 근사합니다."
원장은 잠시 망설이다가 이 제안을 받아들였다.
카메라가 남긴 마지막 두 프레임이 주어진다. 두 프레임 모두에 매의 실루엣이 들어 있다. 배경은 두 프레임에서 완전히 같고 실루엣의 위치만 다르다. 매는 일정한 속도로 움직이고 프레임 사이의 시간 간격도 일정하다. 매의 속도와 카메라의 속도에 맞춰 실루엣 위치를 옮긴 다음 프레임을 복원하라. 새 프레임의 배경은 앞의 두 프레임과 같다.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 두 정수 M, N (2≤M,N≤1000)과 작은따옴표로 감싼 출력 가능한 ASCII 문자 C가 공백으로 구분되어 주어진다. 이어서 M개의 줄, 빈 줄 하나, 다시 M개의 줄이 온다. 앞의 M줄이 첫 번째 프레임이고 뒤의 M줄이 두 번째 프레임이다. 빈 줄이 아닌 각 줄은 정확히 N개의 출력 가능한 ASCII 문자로 이루어진 문자열이고, 문자 하나가 원본 프레임의 픽셀 하나를 나타낸다.
두 프레임 모두 매의 실루엣 전체를 담고 있다. 두 프레임에서 실루엣에 속하는 픽셀은 모두 문자 C이고, 실루엣에 속하지 않는 픽셀은 모두 C가 아닌 문자다. 두 프레임의 실루엣 픽셀은 일부라도 겹치지 않는다. 즉 첫 번째 프레임의 실루엣 픽셀 좌표 중에 두 번째 프레임의 실루엣 픽셀 좌표와 같은 것은 없다. 두 실루엣의 모양은 서로 같다. 한 프레임의 실루엣을 가로나 세로로 몇 픽셀 평행이동하면 다른 프레임의 실루엣 위치와 정확히 일치한다. 실루엣은 회전하지 않는다. 기술적인 이유로 실루엣 이미지가 연결되어 있지 않을 수도 있어서, 한 프레임 안에서 서로 떨어진 여러 영역으로 나뉠 수 있다.
출력 가능한 ASCII 문자는 느낌표(!, 십진 ASCII 코드 33)부터 물결표(~, 십진 ASCII 코드 126)까지의 문자다.
테스트 케이스 사이에는 빈 줄이 하나씩 있다. 입력의 끝은 0 0 ' ' 한 줄로 표시한다.
각 테스트 케이스마다 N개의 문자로 이루어진 M개의 줄로 프레임 하나를 출력한다. 이 프레임은 두 입력 프레임을 바탕으로 매의 움직임을 그대로 외삽한 결과다. 두 번째 입력 프레임의 실루엣이 첫 번째 입력 프레임에 대해 가로로, 세로로 몇 픽셀 옮겨져 있다면, 결과 프레임의 실루엣은 두 번째 프레임에 대해 같은 픽셀 수만큼 가로로, 세로로 옮겨져 있어야 한다. 매의 실루엣이 프레임에 일부만 나타나거나 아예 나타나지 않을 수도 있다. 각 테스트 케이스 뒤에 빈 줄을 하나 출력한다.