토너먼트 대진표

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

문제

프로그래머 대학교(PU)는 해마다 여러 교내 스포츠 토너먼트를 개최한다. 출전 팀과 승자를 보여 주는 대진표는 팀 이름이 적힌 자석 표지판을 금속 판에 붙여서 게시한다. 아래는 그러한 대진표의 한 예이다.

가끔 장난꾸러기가 판에서 모든 팀 이름 표지판을 떼어 내어 바닥에 짝을 지어 늘어놓는데, 열 우선(column-major) 순서로 배열한다. 즉 1라운드의 맨 위에서 시작해 그 열을 따라 아래로 내려간 다음, 2라운드의 맨 위로 돌아가 다시 아래로 내려가는 식으로 진행한다. 그리고 이 정보만으로도 프로그래머라면 누구나 원래 대진표를 정확히 복원할 수 있어야 한다는 쪽지를 남긴다. 당신의 과제는 토너먼트 대진표의 팀 이름들을 입력받아 그 대진표를 간단한 ASCII 문자로 그려 내는 프로그램을 작성하는 것이다.

Round    Round      Round       Winner
  1        2          3

_BIG__
      \_BIG_____
_DIGS_/         \
                 \_FIGURES_
                 /         \
       _FIGURES_/           \
                             \
                              \_TIGGER_
                              /
       _TIGGER__             /
                \           /
                 \_TIGGER__/
_WIG__           /
      \_WIG_____/
_ZIG__/

한 가지 까다로운 점은, 어떤 토너먼트에는 대진표를 완전히 채울 만큼 팀이 충분하지 않을 수 있다는 것이다. 이 경우 일부 팀은 1라운드 경기를 치르지 않아도 된다(부전승). 어떤 팀이 실제로 1라운드에서 경기를 했는지는 당신이 추론해야 한다.

입력

입력은 하나 이상의 토너먼트 데이터를 담고 있다. 토너먼트는 1번부터 암묵적으로 번호가 매겨진다.

각 토너먼트는 대진표에 있는 이름 표지판의 총 개수인 양의 홀수 $n$ ($3 \le n \le 31$)이 적힌 한 줄로 시작한다. 그 뒤로 $(n + 1)/2$개의 팀 대진 줄이 이어진다. 마지막 줄을 제외한 모든 줄에는 정확히 두 팀 이름이 공백 하나로 구분되어 있으며, 첫 번째 이름이 출력에서 두 번째 이름 바로 위에 놓인다. 마지막 줄에는 팀 이름이 하나만 있으며, 이는 토너먼트의 우승자이다.

모든 팀 이름은 3자 이상 7자 이하의 대문자 알파벳(A-Z)으로 이루어진다.

값이 -1인 줄 하나가 입력의 끝을 알린다.

출력

각 토너먼트에 대해 먼저 그것이 몇 번째 토너먼트인지 나타내는 줄을 출력한다: Tournament 1, Tournament 2 등. 그다음 대진표 자체를 출력한다.

팀 이름은 왼쪽 정렬하여 출력하며, 앞에 밑줄 _ 하나를 붙이고 뒤에 밑줄을 하나 이상 붙인다. 각 라운드의 너비는 그 라운드에서 가장 긴 팀 이름의 길이에 앞뒤 밑줄 하나씩을 더한 값이다. 1라운드에서 경기하는 팀은 2줄 간격으로 출력한다. 2, 3, 4라운드(대진표가 그만큼 클 경우)의 팀은 각각 4, 8, 16줄 간격으로 출력한다.

일반적인 지침과 달리, 1라운드 팀으로 시작하지 않는 줄은 공백으로 시작할 수 있고, 형식을 맞추기 위해 연속된 공백이 나타날 수도 있다. 그러나 어떤 줄도 끝에 공백이 있어서는 안 되고, 공백만으로 이루어진 줄이나 완전히 빈 줄이 있어서도 안 된다. 대진표를 그리는 데 필요한 기호는 슬래시 /, 백슬래시 \, 밑줄 _뿐이다. 이 문제에서 가능한 가장 큰 대진표는 $n = 31$인 경우이다.