주사위 던지기

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

문제

카메라로 던진 여러 개의 주사위를 사진으로 찍었을 때, 그 이미지만 보고 각 주사위에 나타난 눈(점)의 개수를 세어야 한다.

각 이미지는 세 종류의 픽셀로만 이루어진다. 배경 픽셀, 주사위 픽셀, 그리고 주사위 위의 눈(점) 픽셀이다. 두 픽셀은 변을 맞대고 있을 때에만 연결되어 있다고 하며, 꼭짓점만 맞닿은 경우는 연결로 치지 않는다.

픽셀 집합 $S$가 연결되어 있다는 것은, $S$에 속한 임의의 두 픽셀 $a$, $b$에 대해 $S$ 안의 픽셀 수열 $a_1, a_2, \dots, a_k$가 존재하여 $a = a_1$, $b = a_k$이고 모든 $1 \le i < k$에서 $a_i$와 $a_{i+1}$이 서로 인접함을 뜻한다.

  • 주사위는 배경이 아닌 픽셀들의 극대 연결 집합이다(주사위 픽셀과 눈 픽셀 모두 배경이 아닌 픽셀로 취급한다). '극대'란 배경이 아닌 어떤 픽셀도 더 넣으면서 연결을 유지할 수는 없다는 뜻이다.
  • 눈(점)은 눈 픽셀들의 극대 연결 집합이다.

이미지에 있는 모든 주사위에 대해 각각 몇 개의 눈을 가지고 있는지 구하라.

입력

입력은 여러 장의 사진으로 이루어진다. 각 사진은 두 정수 $w$와 $h$가 적힌 줄로 시작하며, 각각 사진의 너비와 높이를 나타낸다($5 \le w, h \le 50$).

이어지는 $h$개의 줄에는 각각 정확히 $w$개의 문자가 있다.

  • . 은 배경 픽셀,
  • * 은 주사위 픽셀,
  • X 는 눈(점) 픽셀이다.

주사위는 크기가 서로 다를 수 있고, 광학적 왜곡 때문에 완전한 정사각형이 아닐 수도 있다. 모든 사진에는 주사위가 적어도 하나 있으며, 각 주사위의 눈의 개수는 $1$ 이상 $6$ 이하이다.

입력은 첫 줄이 0 0인 사진으로 끝나며, 이 사진은 처리하지 않는다.

출력

사진에는 나타난 순서대로 $1, 2, 3, \dots$의 번호를 붙인다.

$k$번째 사진에 대해 먼저 Throw k를 한 줄에 출력하고, 다음 줄에 그 사진에 있는 각 주사위의 눈의 개수를 증가하는 순서로 정렬하여 한 칸 공백으로 구분해 출력한다.

연속한 두 사진의 출력 사이에는 빈 줄을 하나 넣는다. 마지막 사진 뒤에는 빈 줄을 넣지 않는다.