ICPC(International Collegiate Programming Contest)의 제출 기록을 읽어 팀 순위를 정하는 프로그램을 작성한다.
기록은 제출한 순서대로 나열된 제출 정보의 목록이다. 각 기록은 경과 시간, 팀 번호, 문제 번호, 채점 결과 네 항목으로 이루어진다. 경과 시간은 대회 시작부터 그 제출까지 흐른 시간이다. 채점 결과는 제출한 프로그램이 정답인지 오답인지 알려주고, 오답이면 어떤 종류의 오류가 나왔는지도 알려준다.
팀 순위는 아래 규칙으로 정한다. 여기 적은 규칙은 실제 ICPC 세계 대회와 지역 대회에서 쓰는 규칙에서 세부 규칙 몇 가지를 덜어낸 것이다.
총 소요 시간은 푼 문제마다 계산한 소요 시간을 모두 더한 값이다. 어떤 문제의 소요 시간은 정답 제출의 경과 시간에, 그 문제에서 그전까지 오답 판정을 받은 제출 하나마다 페널티 20분을 더한 값이다.
풀지 못한 문제의 소요 시간은 0이다. 그래서 오답 제출이 여러 번 있어도 페널티는 붙지 않는다.
한 팀이 어떤 문제를 맞힌 뒤에 같은 문제를 다시 제출하는 일은 없다고 가정해도 된다.
입력은 다음 형식의 데이터셋이 여러 개 이어진 것이다. 마지막 데이터셋 다음 줄에는 0이 네 개 주어진다.
M T P R
m1 t1 p1 j1
m2 t2 p2 j2
.....
mR tR pR jR
각 데이터셋의 첫 줄에는 정수 M, T, P, R이 주어진다. M은 대회 시간, T는 팀 수, P는 문제 수, R은 제출 기록 수이다. 이 값들은 120≤M≤300, 1≤T≤50, 1≤P≤10, 0≤R≤2000을 만족한다. 팀 번호는 1부터 T까지, 문제 번호는 1부터 P까지이다.
이어지는 R개의 줄에는 제출 기록 하나가 정수 네 개 mk, tk, pk, jk (1≤k≤R)로 주어진다. mk는 경과 시간, tk는 팀 번호, pk는 문제 번호, jk는 채점 결과이고, jk가 0이면 정답, 나머지 값은 오답을 뜻한다. 이 값들은 0≤mk≤M−1, 1≤tk≤T, 1≤pk≤P, 0≤jk≤10을 만족한다.
경과 시간은 분 단위로 반올림한 값이다.
제출 기록은 제출한 순서대로 주어진다. 즉 i<j이면 i번째 제출이 j번째 제출보다 먼저 이루어졌고 mi≤mj이다. 이 사실을 쓰면 1분이 안 되는 차이로 두 팀의 순위를 가릴 수 있는 경우도 있다. 하지만 순위를 정할 때 그 정보는 쓰지 않는다. 순위는 분 단위 시간만으로 정한다.
각 데이터셋마다 순위가 높은 팀부터 차례로 팀 번호(1부터 T까지)를 한 줄에 출력한다. 두 팀 번호 사이의 구분자는 쉼표이다. 순위가 같은 두 팀 사이의 구분자는 등호이다. 순위가 같은 팀은 팀 번호가 큰 것부터 나열한다.