Instruens Fabulam

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

문제

Instruens Fabulam은 라틴어로 "표(또는 차트)를 그린다"는 뜻이며, 이 문제에서 여러분이 할 일이 바로 그것입니다.

주어진 하나 이상의 표 데이터를 정해진 서식에 맞추어, 테두리와 열 정렬을 갖춘 표 형태로 출력하세요.

입력

입력은 하나 이상의 표 설명(table description)으로 이루어지며, 첫 글자가 *인 줄이 나오면 입력이 끝납니다.

각 표 설명은 헤더 줄로 시작합니다. 헤더 줄은 표의 열 개수와 각 열의 정렬 방식을 정의하는 하나 이상의 문자로 이루어지며, 각 문자는 <, =, > 중 하나로 각각 왼쪽 정렬, 가운데 정렬, 오른쪽 정렬을 의미합니다.

헤더 줄 다음에는 각 행에 해당하는 데이터 줄이 최소 2개, 최대 21개 이어집니다. 각 데이터 줄은 &로 구분된, 비어 있지 않은 항목들로 이루어지며, 항목의 개수는 헤더에서 정의한 열의 개수와 같습니다. 첫 번째 데이터 줄은 각 열의 제목이고, 나머지 데이터 줄은 표 본문의 내용입니다.

항목 내부에는 공백이 들어갈 수 있지만, 항목의 맨 앞이나 맨 뒤에는 공백이 오지 않습니다. 문자 <, =, >, &, *는 위에서 설명한 위치를 제외하고는 입력에 나타나지 않습니다.

출력

각 표 설명에 대해 다음 규칙을 지켜 표를 출력합니다.

  • 표의 전체 너비는 (줄 끝 문자를 제외하고) 79자를 넘지 않습니다.
  • 각 열의 너비는 그 열에서 가장 긴 항목에 맞추고, 열의 내용은 세로 막대 |로 구분합니다. 각 열에서 가장 긴 항목과 이를 감싸는 | 사이에는 정확히 한 칸의 공백을 둡니다.
  • 가로선은 밑줄 _이 아니라 붙임표 -로 그립니다. 표의 네 바깥 모서리에는 @를 놓습니다. 제목 줄과 본문을 구분하는 가로선에서, 열과 열이 만나는 교차점에는 +를 놓습니다.
  • 가운데 정렬 항목을 열 안에 정확히 가운데로 놓을 수 없을 때에는, 남는 한 칸의 공백을 항목의 오른쪽에 둡니다.

입력과 정답 출력은 위의 모든 서식 요건을 만족합니다. 다만 출력에는 두 칸 이상 연속된 공백이 나타날 수 있습니다. 각 줄의 맨 앞과 맨 뒤에는 공백이 없으며, (탭이 아니라) 공백 문자만 사용합니다.