바닥 위의 숫자

시간 제한2초메모리 제한128 MB

문제

타로는 바닥에 곧은 막대를 놓아 하나코에게 숫자를 전달한다. 각 숫자는 7세그먼트 표시기 모양으로 그려진, 정해진 열 가지 형태 중 하나로 만든다.

타로가 항상 딱 맞는 길이의 막대를 가지고 있는 것은 아니어서, 형태를 언제나 완벽하게 놓을 수 있는 것은 아니다. 다행히 하나코는 막대들 사이의 연결 관계만 유지되면 그 형태를 숫자로 인식한다. 막대의 길이나 형태 전체의 방향은 상관없고, 오직 막대들이 어떻게 연결되어 있는지만이 중요하다. 그래서 늘어나거나 회전된 형태도 숫자로 읽을 수 있지만, 어떤 숫자와도 연결 관계가 일치하지 않는 형태는 인식하지 못한다.

한 막대가 다른 막대에 닿을 때, 닿는 점은 적어도 한쪽 막대의 끝점이며, 두 막대는 정확히 한 점에서만 겹친다. 막대끼리 교차하지는 않으며, 닿는 두 막대는 항상 직각으로 만난다. 연결 관계만 유지된다면 형태의 위치, 길이, 전체 회전은 자유롭게 바뀔 수 있다. 연결 관계를 유지한다는 것은 다음을 뜻한다.

  • 떨어져 있던 막대를 서로 닿게 만들지 않는다.
  • 닿아 있던 막대를 떼어 놓지 않는다.
  • 한 막대의 끝점이 다른 막대에 닿아 있으면 그 끝점은 계속 같은 막대에 닿아 있다. 상대 막대의 내부 점에 닿아 있으면 계속 같은 막대의 같은 쪽 내부 점에 닿아 있다.
  • 닿는 두 막대가 이루는 직각의 방향(부호)은 유지된다. $+90°$ 모서리와 $-90°$ 모서리는 서로 다른 것으로 보므로, 2와 5의 형태는 구별된다.

열 개의 형태는 원본 그림에 제시된 것과 같다. 말로 설명하면, 각 숫자는 다음과 같이 곧은 막대들로 이루어진다(위·아래·왼쪽·오른쪽·가운데는 7세그먼트 표시기의 획을 가리킨다).

  • 0 — 직사각형을 이루는 막대 네 개: 위쪽 막대, 아래쪽 막대, 높이 전체의 왼쪽 막대, 높이 전체의 오른쪽 막대.
  • 1 — 세로 막대 하나(오른쪽 변).
  • 2 — 지그재그로 놓인 막대 다섯 개: 위쪽 막대, 이어서 오른쪽 위로 내려가는 막대, 왼쪽으로 가는 가운데 막대, 왼쪽 아래로 내려가는 막대, 오른쪽으로 가는 아래쪽 막대.
  • 3 — 막대 네 개: 위쪽 막대, 높이 전체의 오른쪽 막대, 아래쪽 막대, 그리고 오른쪽 막대의 내부 점에 닿는 가운데 막대.
  • 4 — 막대 세 개: 왼쪽 위 세로 막대, 높이 전체의 오른쪽 막대, 그리고 한쪽 끝이 왼쪽 위 막대와 만나고 다른 쪽 끝이 오른쪽 막대의 내부 점에 닿는 가운데 막대.
  • 5 — 2의 거울상이며 역시 막대 다섯 개: 위쪽 막대, 이어서 왼쪽 위로 내려가는 막대, 오른쪽으로 가는 가운데 막대, 오른쪽 아래로 내려가는 막대, 왼쪽으로 가는 아래쪽 막대.
  • 6 — 막대 다섯 개: 위쪽 막대, 높이 전체의 왼쪽 막대, 아래쪽 막대, 오른쪽 아래 세로 막대, 그리고 왼쪽 막대의 내부 점에 닿는 가운데 막대.
  • 7 — 막대 세 개: 위쪽 막대, 그 왼쪽 끝에서 짧게 아래로 내려오는 세로 획, 높이 전체의 오른쪽 막대.
  • 8 — 막대 다섯 개: 직사각형의 네 변에, 왼쪽 막대와 오른쪽 막대의 내부 점에 각각 닿는 가운데 막대를 더한 것.
  • 9 — 막대 네 개: 위쪽 막대, 왼쪽 위 세로 막대, 높이 전체의 오른쪽 막대, 그리고 오른쪽 막대의 내부 점에 닿는 가운데 막대.

어떤 숫자의 형태는 항상 다른 숫자의 형태를 포함한다. 예를 들어 9의 형태는 항상 1의 형태 네 개, 4의 형태 한 개, 그리고 겹쳐진 7의 형태 두 개를 포함한다. 더 큰 형태 안에 포함된 형태는 무시하고, 서로 연결된 막대들의 극대 집합이 이루는 가장 큰 형태만 센다. 9 하나는 9 한 개로 세고, 1·4·7의 개수에는 전혀 더하지 않는다.

바닥에 각 숫자가 몇 번 나타나는지 세는 것이 문제이다.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

n
xa_1 ya_1 xb_1 yb_1
xa_2 ya_2 xb_2 yb_2
.
.
.
xa_n ya_n xb_n yb_n

첫 번째 줄에는 막대의 개수 $n$이 주어진다. 이어지는 $n$개의 줄은 각각 막대 하나를 하나의 공백으로 구분된 네 정수 $xa$, $ya$, $xb$, $yb$로 나타낸다. $(xa, ya)$와 $(xb, yb)$는 고정된 직교 좌표계에서 주어지는 막대의 두 끝점 좌표이다. $1 \le n \le 1000$, $0 \le xa, ya, xb, yb \le 1000$임을 가정해도 된다.

입력의 끝은 $0$ 하나만 있는 줄로 표시된다.

다음도 가정해도 된다.

  • 한 점을 세 개 이상의 막대가 공유하지 않는다.
  • 모든 막대는 어떤 숫자의 일부이며, 숫자가 아닌 형태는 바닥에 없다.
  • 한 숫자의 막대는 다른 숫자의 막대와 닿거나 교차하지 않는다.
  • 길이가 0인 막대는 없다.

출력

각 데이터셋마다 하나의 공백으로 구분된 정수 열 개를 한 줄에 출력한다. 이 정수들은 바닥에 숫자 $0, 1, 2, \ldots, 9$가 각각 몇 번 나타나는지를 순서대로 나타낸다. 그 밖의 문자는 출력하지 않는다.