아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

올림피아드 등록

면접 대비

시간 제한2초메모리 제한512 MB

요약
각 행은 두 가지 순서 중 하나로 기록되었고, 이름이 최소 두 번 등장한다는 조건을 이용해 각 참가자의 성, 이름, 부칭을 알아낸 뒤 성을 기준으로 정렬하는 문제입니다.
난이도

보통10점 중 5점

유형
해시맵, 문자열, 정렬, 구현
정답자
아직 제출이 없습니다

문제

페티아와 바샤는 프로그래밍 올림피아드를 준비한다. 참가자가 너무 많아서 모두 등록시키려면 페티아와 바샤가 둘이서 함께 일해야 했다.

등록하려면 각 참가자가 자신의 이름, 성, 부칭을 말하고, 페티아와 바샤는 그 정보를 공용 전자 표에 적는다. 참가자는 많고 준비할 시간은 부족해서 페티아와 바샤는 표에 참가자 데이터를 기록하는 형식을 미리 정하지 못했고, 즉석에서 처리해야 했다. 페티아는 각 참가자에 대해 성, 이름, 부칭 순으로 적기로 했고, 바샤는 이름, 부칭, 성 순으로 적기로 했다.

등록이 끝난 뒤, 이 표로는 올림피아드 결과를 정리할 수 없다는 것이 분명해졌다. 참가자가 자신을 찾기 불편할 것이기 때문이다. 그래서 표를 다음과 같은 형태로 바꾸기로 했다.

  • 모든 참가자에 대해 성을 먼저 쓰고, 그다음 이름, 그다음 부칭을 쓴다.
  • 표의 참가자는 성을 기준으로 사전순으로 정렬한다.

사전순은 사전의 순서와 같다. 단어는 첫 글자, 그다음 두 번째 글자 순으로 비교한다. 어떤 단어의 해당 글자가 다른 단어의 글자보다 작으면 그 단어가 사전순으로 더 작다. 끝까지 차이가 발견되지 않아 한 단어가 다른 단어의 접두사이면, 그 단어가 더 작다고 본다.

페티아와 바샤는 모든 참가자의 성이 서로 다르고, 각 이름은 적어도 두 번 나타난다는 것을 알아냈다. 또한 어떤 이름도 어떤 참가자의 성이나 부칭이 아니며, 마찬가지로 어떤 성과 부칭도 일치하지 않는다.

이 정보를 이용해 표를 원하는 형태로 바꾸도록 도와주자.

입력

첫째 줄에 전자 표의 전체 기록 수 nn (2≤n≤10002 \le n \le 1000)이 주어진다. 다음 nn개 줄에 각각 세 단어 s1,is_{1,i}, s2,is_{2,i}, s3,is_{3,i}가 주어진다. 각 단어는 1개 이상 20개 이하의 라틴 문자로 이루어지며, 첫 글자는 대문자이고 나머지 글자는 모두 소문자이다. 각 줄은 페티아나 바샤가 적은 기록 하나에 해당한다. 단어는 공백 하나로 구분된다.

출력

nn개 줄을 출력한다. 각 참가자에 대해 성, 이름, 부칭 순으로 쓰고, 모든 기록을 사전순으로 정렬한 전자 표를 출력한다.

예제1

  1. 예제 1

    입력
    4
    Ivanov Ivan Ivanovich
    Ivan Borisovich Petrov
    Sergey Ivanovich Sidorov
    Pavlov Sergey Borisovich
    
    예상 출력
    Ivanov Ivan Ivanovich
    Pavlov Sergey Borisovich
    Petrov Ivan Borisovich
    Sidorov Sergey Ivanovich