Рейтинг ICPC
Ваше завдання — розробити програму, яка, отримавши журнал подачі заявок на ICPC (Міжнародний студентський конкурс з програмування), визначить рейтинг команд.
Журнал — це послідовність записів подачі програм у порядку їх подачі. Кожен запис містить чотири поля: витрачений час, номер команди, номер задачі та оцінка. Витрачений час — це час, що минув від початку конкурсу до моменту подачі. Поле оцінки вказує, чи була подана програма правильною чи неправильною, і якщо неправильною, то який вид помилки було знайдено.
Рейтинг команд визначається за такими правилами. Зверніть увагу, що набір правил, наведений тут, використовується на реальних фіналах та регіональних змаганнях ICPC, з деякими деталями, опущеними для спрощення.
Команди, які розв'язали більше задач, займають вищі місця.
Серед команд, які розв'язали однакову кількість задач, ті, що мають менший загальний витрачений час, займають вищі місця.
Якщо дві або більше команд розв'язали однакову кількість задач, і їх загальний витрачений час однаковий, вони займають однакове місце.
Загальний витрачений час — це сума витраченого часу для кожної розв'язаної задачі. Витрачений час для розв'язаної задачі — це витрачений час подачі, яка була прийнята, плюс 20 штрафних хвилин за кожну попередню відхилену подачу для цієї задачі.
Якщо команда не розв'язала задачу, витрачений час для задачі дорівнює нулю, і навіть якщо є кілька неправильних подач, штраф не нараховується.
Ви можете припустити, що команда ніколи не подає програму для задачі після правильної подачі для тієї ж задачі.
Вхідні дані
Вхідні дані — це послідовність наборів даних у наступному форматі. Останній набір даних завершується рядком з чотирма нулями.
M T P R
m_1 t_1 p_1 j_1
m_2 t_2 p_2 j_2
.....
m_R t_R p_R j_R
Перший рядок набору даних містить чотири цілі числа 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 рядків містить запис про подачу з чотирма цілими числами m_k, t_k, p_k та j_k (1 ≤ k ≤ R). m_k — це витрачений час. t_k — це номер команди. p_k — це номер задачі. j_k — це оцінка (0 означає правильну, а інші значення означають неправильну). Для цих значень виконуються відношення 0 ≤ m_k ≤ M−1, 1 ≤ t_k ≤ T, 1 ≤ p_k ≤ P, і 0 ≤ j_k ≤ 10.
Поля витраченого часу округлюються до найближчої хвилини.
Записи про подачу надаються в порядку подачі. Тому, якщо i < j, то i-та подача зроблена перед j-тою подачею (m_i ≤ m_j). У деяких випадках ви можете визначити рейтинг двох команд з різницею менше хвилини, використовуючи цей факт. Однак, такий факт ніколи не використовується в рейтингу команд. Команди ранжуються лише за допомогою інформації про час у хвилинах.
Вихідні дані
Для кожного набору даних ваша програма повинна вивести номери команд (від 1 до T), команди з вищим рейтингом першими. Роздільник між двома номерами команд повинен бути комою. Коли дві команди займають однакове місце, роздільник між ними повинен бути знаком рівності. Команди, що займають однакове місце, повинні бути перераховані в порядку зменшення їх номерів команд.