아스키 아트 표

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

문제

HTML에서 표를 그리려면 태그를 써야 한다. 표를 나타내는 간단한 표현이 주어졌을 때, 그 표의 아스키 아트를 그리는 프로그램을 작성하시오.

표는 mmnn열 그리드다. 칸 하나는 너비가 두 글자, 높이가 한 글자다. 2×32 \times 3 그리드는 다음과 같이 그린다.

 -- -- --
|11|12|13|
 -- -- --
|21|22|23|
 -- -- --

아스키 아트는 2m+12m + 1개의 줄로 이루어지고, 각 줄은 3n+13n + 1개의 글자로 이루어진다. 경계 줄 앞뒤에 들어가는 공백도 글자 수에 센다.

표는 여러 행이나 여러 열을 한 칸으로 합칠 수 있다. 예를 들어 1행 1열 칸이 두 행을 합치고 2행 2열 칸이 두 열을 합치면 아스키 아트는 다음과 같다.

 -- -- --
|11|12|13|
    -- --
|  |22   |
 -- -- --

첫 줄부터 세어 홀수 번째 줄은 가로 경계다. jj번째 열 자리에는 바로 위와 바로 아래가 서로 다른 칸이면 --를, 같은 칸이 이어지면 공백 두 개를 쓴다. 표의 첫 줄과 마지막 줄에는 모든 열에 --를 쓴다.

짝수 번째 줄은 칸의 내용이다. 줄의 맨 앞과 맨 뒤에는 항상 |를 쓰고, 가로로 이웃한 두 자리가 서로 다른 칸이면 그 사이에 |를, 같은 칸이 이어지면 공백을 쓴다.

mm과 각 칸이 합친 행과 열의 수가 주어졌을 때, 아스키 아트를 그리는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 행의 수 mm이 주어진다. 이어지는 mm개의 줄에는 그 행에서 새로 시작하는 칸의 정보가 왼쪽 열부터 차례로 주어진다. 합친 정보는 그 칸의 왼쪽 위 자리에서 한 번만 주어진다.

한 행을 나타내는 데 NN개의 정보가 필요하면 그 줄은 다음과 같이 주어진다.

N RS1 CS1 ... RSN CSN

RSkRS_kCSkCS_k는 1보다 크거나 같고 9보다 작거나 같으며, 그 칸이 합친 행의 수와 열의 수다. 이전 행에서 내려온 칸이 이미 자리를 차지한 행은 필요한 숫자가 더 적을 수도 있다. 한 행이 이전 행에서 내려온 칸으로 모두 채워지면 그 줄은 0 하나만 주어진다.

입력은 다음 조건을 만족한다.

  • 행의 수와 열의 수는 1보다 크거나 같고 9보다 작거나 같다.
  • 모든 행의 열의 개수가 같다.
  • 합치는 범위가 겹치는 경우는 없다.
  • 모든 자리는 어떤 칸에 속한다.

테스트 케이스는 최대 100개이고, 입력의 마지막은 m=0m = 0인 줄이다.

출력

각 테스트 케이스마다 주어진 표의 아스키 아트를 출력한다. 모든 칸의 왼쪽 위 자리에는 그 자리의 행 번호와 열 번호를 차례로 쓴다. 테스트 케이스와 테스트 케이스 사이에는 빈 줄을 하나 출력하고, 마지막 테스트 케이스 뒤에는 빈 줄을 출력하지 않는다.

줄 끝에 공백이 남으면 그 공백을 모두 지우고 출력한다.