경주장에서의 하루

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

문제

포뮬러 원(Formula One)은 자동차 경주의 최상위 클래스이다. 한 시즌은 그랑프리(Grand Prix)라고 불리는 여러 경주로 이루어지며, 페라리(Ferrari), 르노(Renault)와 같은 컨스트럭터들이 세계 최고의 드라이버가 모는 한 대 이상의 차량으로 참가한다. 시즌 동안 팀들은 두 개의 챔피언십, 즉 드라이버 챔피언십팀 챔피언십에서 동시에 경쟁한다.

드라이버 챔피언십에서는 각 드라이버가 시즌 전체에 걸쳐 최대한 많은 점수를 얻으려 한다. 매 그랑프리마다 상위 8명의 드라이버는 1위부터 8위까지 각각 10, 8, 6, 5, 4, 3, 2, 1점을 얻는다. 드라이버는 총점이 높은 순서로 순위가 매겨진다. 총점이 같으면 1위를 더 많이 한 드라이버가 앞선다. 그래도 같으면 2위 횟수가 더 많은 드라이버가 앞서며, 이런 식으로 8위 횟수까지 비교한다. 그래도 순위가 정해지지 않으면 성(last name), 그다음 이름(first name)의 사전순으로 정렬한다.

각 경주가 끝나면 드라이버가 얻은 점수는 그 경주에서 그 드라이버가 소속되었던 팀의 몫으로 더해진다. 스폰서는 시즌 도중에도 다른 팀의 드라이버를 영입할 수 있으므로, 한 드라이버가 그랑프리마다 서로 다른 팀 소속으로 달릴 수 있다. 점수는 항상 해당 경주에서의 소속 팀에게 돌아간다. 시즌이 끝나면 점수가 가장 많은 팀이 팀 챔피언십에서 우승한다. 총점이 같은 팀들은 이름의 사전순으로 정렬한다.

한 포뮬러 원 시즌의 결과가 주어질 때, 드라이버 순위와 팀 순위를 모두 구하라.

입력

입력은 하나 이상의 데이터 집합으로 이루어지며, 각 집합은 하나의 포뮬러 원 시즌을 나타낸다. 모든 입력 줄의 길이는 255자 이하이다.

각 시즌의 첫 줄에는 그 시즌의 그랑프리 수를 나타내는 정수 $N$이 주어지며, $0 < N < 32$이다. 각 그랑프리는 다음과 같이 주어진다.

  • 그랑프리의 이름이 적힌 한 줄(최대 64자).
  • 1위부터 8위까지 상위 8명의 결과 표. 각 데이터 줄에는 순위, 드라이버의 이름(first name), 성(last name), 팀 이름이 차례로 적혀 있다.
  • 대시 세 개(---)로 이루어진 한 줄이 그랑프리의 끝을 나타낸다.

이름과 성은 공백이 없는 출력 가능한 ASCII 문자열이며 각각 최대 12자이다. 팀 이름은 출력 가능한 ASCII 문자열로 최대 18자이며 공백을 포함할 수 있으나(단, 앞뒤 공백은 없다) 이름 바로 뒤에 마침표(.) 하나가 붙는데 이 마침표는 이름에 포함되지 않는다. 마침표 뒤에는 공백이 더 올 수 있다. 순위로 시작하지 않는 줄(예: 열 제목 줄)은 데이터가 아니므로 무시한다.

입력의 마지막 줄에는 0 하나만 주어진다.

출력

각 데이터 집합에 대해 Season k:를 출력한다. 여기서 $k$는 1부터 시작하는 데이터 집합의 번호이다. 이어서 Drivers Standing:을 출력한 뒤, 드라이버 순위를 한 줄에 한 명씩 출력한다. 각 줄에는 이름과 성을 정확히 한 칸의 공백으로 구분하여 폭 25의 필드에 왼쪽 정렬로 쓰고, 그 뒤에 공백 한 칸, 그리고 그 드라이버의 시즌 총점을 쓴다.

그다음 빈 줄을 하나 출력하고 Teams Standing:을 출력한 뒤, 팀 순위를 한 줄에 한 팀씩 출력한다. 각 줄에는 팀 이름을 폭 25의 필드에 왼쪽 정렬로 쓰고, 그 뒤에 공백 한 칸, 그리고 그 팀의 시즌 총점을 쓴다.

연속한 데이터 집합 사이는 빈 줄 하나로 구분한다. 마지막 데이터 집합 뒤에는 빈 줄을 추가로 출력하지 않는다.