Інформація про кожного з учнів школи має вигляд: прізвище, ім'я, клас, дата народження.
В залежності від ситуації, їх буває потрібно сортувати у різних порядках. Повний перелік стандартних порядків такий:
surname
— за прізвищем, ігноруючи ім'я;
fullname
— за прізвищем, а при однаковості прізвищ – за іменем;
birthyear
— за роком народження, ігноруючи дату всередині року, від менших дат (старших учнів) до більших дат (молодших учнів);
birthdate
— за датою народження, включаючи рік, від менших дат (старших учнів) до більших дат (молодших учнів);
birthday
— за днем народження, тобто вважаючи рівними однакові день і місяць різних років, від 01.01 до 31.12 (у календарному смислі, в форматі дд.мм
);
grade
— за класом як номером року навчання, від 1 до 11, ігноруючи букву;
class
— спочатку за класом як номером року навчання, а при однаковості – за буквою класу від A
до Z
.
Причому, інколи буває потрібно застосовувати декілька порядків: спочатку один, при рівності за першим — другий, і т. д. Наприклад, "birthyear grade surname
" означає, що спочатку треба вивести всіх школярів, наприклад, 1998 р. н., потім усіх 1999 р. н., потім усіх 2000 р. н., і так далі, причому серед школярів одного й того ж року народження проводити сортування за класами (як роками навчання, ігноруючи букву), а вже тих, у кого однакові і рік народження, і клас без урахування букви, розташувати в алфавітному порядку за прізвищами.
У першому рядку записаний необхідний порядок сортування, як одне або декілька зі слів surname
, fullname
, birthyear
, birthdate
, birthday
, grade
, class
. Хоча б одне слово обов'язково присутнє; якщо слів декілька, то вони розділені одинарними пробілами; одне й те ж слово не може згадуватися більше одного разу.
У другому рядку записана кількість учнів N (2⩽N⩽12345).
Далі йдуть N груп по 4 рядки кожна: (1) прізвище — починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів; (2) ім'я — починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів і пробілів; (3) дата народження (дд.мм.рр
, тобто і день, і місяць, і рік завжди задані рівно двома цифрами); (4) клас — число від 1 до 11 і одна велика латинська літера, без пробілу між ними.
Всі дати народження правильні (не буває, наприклад, 30.02) і належать діапазону років від 1990 до 2030. Тобто, наприклад, 97<02, бо насправді це 1997 і 2002. Здебільшого, учні старших класів мають раніші дати народження, ніж учні молодших, але можливі виключення.
Більшість (не менше 99,9%) прізвищ та імен мають довжину до 20 символів, але щодо решти 0,1% гарантовано лише те, що їх сумарна довжина не перевищує мільйон символів. Прізвища та імена гарантовано закінчуються або літерою, або апострофом (але не дефісом і не пробілом).
Прізвища з прізвищами та імена з іменами слід порівнювати стандартним для мов програмування регістрозалежним лексикографічним порівнянням рядків (навіть у випадку наявності дефісів, пробілів, тощо).
Вивести N рядків, у кожному з яких записані дані про одного з учнів, у форматі: клас, кома, пробіл, прізвище, кома, пробіл, ім'я, кома, пробіл, дата народження.
Клас, прізвище, ім'я і дата народження мають бути байт-у-байт такими ж, як у вхідних даних.
Рядки мають бути впорядкованими у відповідності до описаних в першому рядку вхідних даних порядком сортування.
У всіх випадках, коли застосування вказаних порядків до вказаним даних залишає можливість різних правильних відповідей — виводьте будь-яку одну з правильних відповідей. Наприклад, якщо при вже згаданому порядку "birthyear grade surname
" в деякому класі (році навчання) є однопрізвищники одного року народження — їх можна вивести в будь-якому порядку, але треба вивести кожного рівно один раз.
birthyear grade surname 8 Gonsales Anna Maria 5A 01.05.03 Ivanov Kyrylo 11A 12.01.97 Ivanov Ivan 3D 20.01.05 Ivanov Andrii 11B 23.12.97 Petrenko Nataliia 11B 23.08.97 Andrijchenko Kateryna 11B 07.02.98 Shevchenko Denys 10A 07.05.98 Smirnov-Kovalenko Yehor 9A 13.11.98
11A, Ivanov, Kyrylo, 12.01.97 11B, Ivanov, Andrii, 23.12.97 11B, Petrenko, Nataliia, 23.08.97 9A, Smirnov-Kovalenko, Yehor, 13.11.98 10A, Shevchenko, Denys, 07.05.98 11B, Andrijchenko, Kateryna, 07.02.98 5A, Gonsales, Anna Maria, 01.05.03 3D, Ivanov, Ivan, 20.01.05
Відповідь, у якій Ivanov Andrii
та Ivanov Kyrylo
переставлені місцями, також є правильною. Інших, крім цих двох, правильних відповідей для цих вхідних даних не існує.
Мова C# дотримується трохи іншого, чим більшість мов програмування, уявлення про стандартне регістрозалежне лексикографічне порівняння рядків, тому нею замість очевидного фрагмента p1.surName.CompareTo(p2.surName)
слід писати String.Compare(p1.surName, p2.surName, StringComparison.Ordinal)
, та аналогічно в решті випадків, де це важливо.