프로그래머여, 스스로 순위를 매겨라

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

문제

프로그래밍 대회의 순위 프로그램을 구현하라.

각 팀은 최대 일곱 개의 문제를 푼다. 각 팀에 대해 문제마다 그 문제를 해결한 시각이 주어지며, 시각이 $0$이면 그 문제를 풀지 못한 것이다. 팀들의 순위를 매기고, 각 대회마다 정해진 형식의 결과표를 출력하는 것이 목표다.

입력

입력에는 하나 이상의 대회가 주어지고, 마지막에는 숫자 0 하나만 있는 줄이 나와 입력의 끝을 나타낸다.

각 대회는 팀의 수를 나타내는 양의 정수 $c$ ($1 \le c \le 20$)가 적힌 줄로 시작한다. 이어지는 $c$개의 줄에는 각각 팀 이름과 일곱 문제의 해결 시각이 공백으로 구분되어 주어진다. 팀 이름은 1자 이상 10자 이하의 알파벳 문자로 이루어지며, 한 대회 안에서 모든 팀 이름은 서로 다르다. 각 시각은 $500$ 이하의 음이 아닌 정수이고, $0$은 해당 문제를 풀지 못했음을 뜻한다.

팀의 순위는 다음 기준을 순서대로 적용해 정한다.

  1. 푼 문제 수가 많을수록 앞선다(시각이 $0$이 아닌 문제를 푼 것으로 본다).
  2. 푼 문제 수가 같으면, 총 소요 시간(일곱 시각의 합)이 적을수록 앞선다.
  3. 그것도 같으면, $0$이 아닌 시각들의 기하평균(아래 방식으로 반올림한 값)이 작을수록 앞선다.

세 기준이 모두 같은 팀들은 동순위이며, 같은 등수를 부여받고 대문자와 소문자를 구분하는 사전식 순서로 나열된다. 한 팀의 등수는 항상 그 팀보다 (동순위가 아니라) 확실히 앞서는 팀의 수보다 하나 더 크다.

기하평균은 정수로 반올림하며, 순위 결정과 출력에는 이 반올림한 값만 사용한다. 일곱 시각이 모두 $0$이면 기하평균은 $0$이다. 그렇지 않고 $0$이 아닌 시각이 $t_1, t_2, \ldots, t_n$이면 기하평균은

$$\exp!\left(\frac{\ln t_1 + \ln t_2 + \cdots + \ln t_n}{n}\right)$$

로 정의한다. 여기서 $\exp x = e^x$이고 $\ln x$는 자연로그다. 반드시 이 정의를 사용하라. 기하평균을 구한 뒤에는 $0.5$를 더하고 소수 부분을 버려 정수로 반올림한다.

출력

각 대회에 대해 먼저 CONTEST k 형식의 머리글 줄을 출력한다. 여기서 $k$는 $1$부터 시작하는 대회 번호다. 그다음 순위 순서대로 각 팀을 한 줄씩 출력한다.

각 팀 줄에는 순서대로 등수, 팀 이름, 푼 문제 수, 총 소요 시간, 반올림한 기하평균, 그리고 입력에 나온 순서 그대로의 일곱 개 개별 해결 시각을 적는다.

출력의 모든 줄은 같은 열 너비를 사용하며, 이 너비는 대회마다가 아니라 전체 입력을 통틀어 한 번만 계산한다. 각 열의 너비는 입력 전체에서 그 열에 나타나는 값 중 가장 넓은 값에 맞춘다. 각 필드는 그 너비에 맞도록 공백(탭 금지)으로 채운다. 팀 이름은 왼쪽 정렬, 나머지 필드는 모두 오른쪽 정렬이다. 등수는 항상 두 자리로 쓰며 필요하면 앞에 $0$을 붙인다. 일곱 개의 시각 열은 하나의 공통 너비를 공유한다. 어떤 줄도 공백으로 시작하거나 끝나지 않는다.