Задачі
Досье
Досье
Інформація про кожного з учнів школи має вигляд: прізвище, ім'я, клас, дата народження.
В залежності від ситуації, їх буває потрібно сортувати у різних порядках. Повний перелік стандартних порядків такий:
\begin{itemize}
\item
{\tt surname} ---
за прізвищем, ігноруючи ім'я;
\item
{\tt fullname} ---
за прізвищем, а при однаковості прізвищ -- за іменем;
\item
{\tt birthyear} ---
за роком народження, ігноруючи дату всер\emph{е}дині року, від менших дат (старших учнів) до більших дат (молодших учнів);
\item
{\tt birthdate} ---
за датою народження, включаючи рік, від менших дат (старших учнів) до більших дат (молодших учнів);
\item
{\tt birthday} ---
за днем народження, тобто вважаючи рівними однакові день і місяць різних років, від 01.01 до 31.12 (у~календарному смислі, в форматі {\tt дд.мм});
\item
{\tt grade} ---
за класом як номером року навчання, від 1 до 11, ігноруючи букву;
\item
{\tt class} ---
спочатку за класом як номером року навчання, а при однаковості -- за буквою класу від {\tt A} до~{\tt Z}.
\end{itemize}
Причому, інколи буває потрібно застосовувати декілька порядків: спочатку один, при рівності за першим~--- другий, і~т.~д.
Наприклад, "{\tt birthyear grade surname}" означає, що спочатку треба вивести всіх школярів, наприклад, 1998~р.~н.,
потім усіх 1999~р.~н., потім усіх 2000~р.~н., і так далі, причому серед школярів одного й того ж року народження
проводити сортування за класами (як~роками навчання, ігноруючи букву), а~вже тих, у~кого однакові і~рік народження,
і~клас без урахування букви, розташувати в~алфавітному порядку за прізвищами.
\InputFile
У першому рядку записаний необхідний порядок сортування, як одне або декілька зі слів
{\tt surname}, {\tt fullname}, {\tt birthyear}, {\tt birthdate}, {\tt birthday}, {\tt grade}, {\tt class}.
Хоча~б одне слово обов'язково присутнє; якщо слів декілька, то вони розділені одинарними пробілами;
одне й те ж слово не~може згадуватися більше одного разу.
У~другому рядку записана кількість учнів $N$ ($2\leqslant N \leqslant 12345$).
Далі йдуть $N$ груп по~4~рядки кожна:
(1)~прізвище~--- починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів;
(2)~ім'я~--- починається з великої латинської літери, далі послідовність латинських букв, дефісів, апострофів і пробілів;
(3)~дата народження ({\tt дд.мм.рр}, тобто і~день, і~місяць, і~рік завжди задані рівно двома цифрами);
(4)~клас~--- число від 1 до~11 і одна велика латинська літера, без пробілу між ними.
Всі дати народження правильні (не~буває, наприклад, 30.02) і належать діапазону років від 1990 до 2030.
Тобто, наприклад, $97<02$, бо насправді це 1997 і 2002. Здебільшого, учні старших класів мають раніші дати народження, ніж учні молодших, але можливі виключення.
Більшість (не~менше~99,9\%) прізвищ та імен мають довжину до~20~символів, але щодо решти 0,1\% гарантовано лише~те,
що їх сумарна довжина не~перевищує мільйон символів. Прізвища та імена гарантовано закінчуються або літерою, або апострофом
(але~не~дефісом і не~пробілом).
Прізвища з прізвищами та імена з іменами слід порівнювати стандартним для мов програмування регістрозалежним лексикографічним порівнянням рядків (навіть у випадку наявності дефісів, пробілів, тощо).
\OutputFile
Вивести $N$ рядків, у кожному з яких записані дані про одного з учнів, у форматі:
клас, кома, пробіл, прізвище, кома, пробіл, ім'я, кома, пробіл, дата народження.
Клас, прізвище, ім'я і дата народження мають бути байт-у-байт такими ж, як у вхідних даних.
Рядки мають бути впорядкованими у відповідності до описаних в першому рядку вхідних даних порядком сортування.
У всіх випадках, коли застосування вказаних порядків до вказаним даних залишає можливість різних правильних відповідей~---
виводьте будь-яку одну з правильних відповідей. Наприклад, якщо при вже згаданому порядку "{\tt birthyear grade surname}" в~деякому класі (році навчання) є однопрізвищники одного року народження~--- їх можна вивести в будь-якому порядку, але треба вивести кожного рівно один раз.
\Examples
\begin{example}
\exmp{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
}%
\end{example}
\Note
\begin{enumerate}
\item
Відповідь, у якій {\tt Ivanov Andrii} та {\tt Ivanov Kyrylo} переставлені місцями, також є правильною.
Інших, крім цих двох, правильних відповідей для цих вхідних даних не~існує.
\item
Мова C\# дотримується трохи іншого, чим більшість мов програмування, уявлення про стандартне регістрозалежне лексикографічне порівняння рядків, тому нею замість очевидного фрагмента {\tt p1.surName.CompareTo(p2.surName)}
слід писати {\tt String.Compare(p1.surName, p2.surName, StringComparison.Ordinal)},
та аналогічно в решті випадків, де це важливо.
\end{enumerate}
Вхідні дані #1
birthyear grade surname 8 Gonsales Anna Maria 5A 01.05.03 Ivanov Kirill 11A 12.01.97 Ivanov Ivan 3D 20.01.05 Ivanov Andrey 11B 23.12.97 Petrova Natalia 11B 23.08.97 Andreeva Ekaterina 11B 07.02.98 Shevchenko Denis 10A 07.05.98 Smirnov-Kovalenko Egor 9A 13.11.98
Вихідні дані #1
===v=== 11A, Ivanov, Kirill, 12.01.97 11B, Ivanov, Andrey, 23.12.97 ===^=== ===v=== 11B, Petrova, Natalia, 23.08.97 ===^=== ===v=== 9A, Smirnov-Kovalenko, Egor, 13.11.98 ===^=== ===v=== 10A, Shevchenko, Denis, 07.05.98 ===^=== ===v=== 11B, Andreeva, Ekaterina, 07.02.98 ===^=== ===v=== 5A, Gonsales, Anna Maria, 01.05.03 ===^=== ===v=== 3D, Ivanov, Ivan, 20.01.05 ===^===