Досье
Інформація про кожного з учнів школи має вигляд: прізвище, ім'я, клас, дата народження.
В залежності від ситуації, їх буває потрібно сортувати у різних порядках. Повний перелік стандартних порядків такий:
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
. Хоча б одне слово обов'язково присутнє; якщо слів декілька, то вони розділені одинарними пробілами; одне й те ж слово не може згадуватися більше одного разу.
У другому рядку записана кількість учнів ().
Далі йдуть груп по 4 рядки кожна: (1) прізвище — починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів; (2) ім'я — починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів і пробілів; (3) дата народження (дд.мм.рр
, тобто і день, і місяць, і рік завжди задані рівно двома цифрами); (4) клас — число від 1 до 11 і одна велика латинська літера, без пробілу між ними.
Всі дати народження правильні (не буває, наприклад, 30.02) і належать діапазону років від 1990 до 2030. Тобто, наприклад, , бо насправді це 1997 і 2002. Здебільшого, учні старших класів мають раніші дати народження, ніж учні молодших, але можливі виключення.
Більшість (не менше 99,9%) прізвищ та імен мають довжину до 20 символів, але щодо решти 0,1% гарантовано лише те, що їх сумарна довжина не перевищує мільйон символів. Прізвища та імена гарантовано закінчуються або літерою, або апострофом (але не дефісом і не пробілом).
Прізвища з прізвищами та імена з іменами слід порівнювати стандартним для мов програмування регістрозалежним лексикографічним порівнянням рядків (навіть у випадку наявності дефісів, пробілів, тощо).
Вихідні дані
Вивести рядків, у кожному з яких записані дані про одного з учнів, у форматі: клас, кома, пробіл, прізвище, кома, пробіл, ім'я, кома, пробіл, дата народження.
Клас, прізвище, ім'я і дата народження мають бути байт-у-байт такими ж, як у вхідних даних.
Рядки мають бути впорядкованими у відповідності до описаних в першому рядку вхідних даних порядком сортування.
У всіх випадках, коли застосування вказаних порядків до вказаним даних залишає можливість різних правильних відповідей — виводьте будь-яку одну з правильних відповідей. Наприклад, якщо при вже згаданому порядку "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)
, та аналогічно в решті випадків, де це важливо.