유역 구분 (작은 입력)

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

문제

지질학자는 비가 흘러내리는 방향에 따라 땅을 여러 영역으로 나눈다. 이렇게 나눈 각 영역을 유역이라고 한다.

고도 지도가 주어진다. 고도 지도는 각 칸의 고도를 담은 2차원 배열이다. 같은 유역에 속한 칸이 같은 이름표를 갖도록 지도에 이름표를 붙이자. 규칙은 다음과 같다.

  • 각 칸에서 물은 인접한 네 칸(북, 서, 동, 남) 중 최대 한 칸으로만 흘러내린다.
  • 어떤 칸의 인접한 네 칸 중 그 칸보다 고도가 낮은 칸이 하나도 없으면 물은 흘러나가지 않는다. 이런 칸을 싱크라고 한다.
  • 그렇지 않으면 물은 고도가 가장 낮은 인접 칸으로 흐른다.
  • 고도가 가장 낮은 인접 칸이 여러 개면 북, 서, 동, 남 순서에서 가장 앞선 칸으로 흐른다.

바로 또는 여러 칸을 거쳐 같은 싱크로 물이 모이는 칸은 모두 같은 유역에 속하고, 싱크 자신도 그 유역에 속한다. 각 유역에 서로 다른 소문자를 붙이되, 이름표를 붙인 지도의 각 행을 위에서 아래로 이어 붙인 문자열이 사전순으로 가장 앞서도록 붙인다. 따라서 가장 북서쪽 칸이 속한 유역의 이름표는 항상 a다.

입력

첫 줄에 지도의 개수 TT가 주어진다.

각 지도의 첫 줄에는 지도의 높이 HH와 너비 WW가 칸 단위로 주어진다. 이어지는 HH개의 줄은 지도의 각 행을 북쪽에서 남쪽 순서로 나타낸다. 각 줄에는 WW개의 정수가 서쪽에서 동쪽 순서로 주어지며, 이 값이 각 칸의 고도다.

제한

  • 1T1001 \le T \le 100
  • 1H,W201 \le H, W \le 20
  • 00 \le 고도 9\le 9
  • 한 지도의 유역은 최대 26개다

출력

각 지도마다 1+H1 + H개의 줄을 출력한다. 첫 줄은

Case #X:

형태이고, XX는 1부터 시작하는 지도의 번호다. 이어지는 HH개의 줄에는 입력과 같은 순서로 각 칸이 속한 유역의 이름표를 출력한다. 지도의 한 행을 한 줄에 출력하고, 같은 줄의 이름표 사이는 공백 하나로 구분한다.

힌트

첫 번째 예제에서는 오른쪽 위 칸과 왼쪽 아래 칸이 싱크다. 대각선 위의 물은 5가 6보다 낮으므로 왼쪽 아래로 흐른다.