만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

단말 수열

면접 대비

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

요약
번호가 붙은 트리에서 잎을 작은 번호부터 지우며 기록한 수열이 주어질 때, 트리의 간선 N-1개를 복원해 정렬된 순서로 출력한다.
난이도

보통10점 중 5점

유형
트리, 구현, 그리디, 힙
정답자
아직 제출이 없습니다

문제

NN개의 정점으로 이루어진 트리가 있다. 이 트리의 정점에는 11 이상 NN 이하의 번호가 하나씩 붙어 있다. 이러한 트리를 수열로 표현하려고 한다. 방법은 다음과 같다.

  1. 트리의 단말 정점 중 번호가 가장 작은 정점을 제거한다. 그리고 그 정점과 연결되어 있던 정점의 번호를 수열에 추가한다.
  2. 간선이 하나 남을 때까지 1번을 반복한다.

예를 들어 트리의 간선이 (1,5)(1, 5), (2,5)(2, 5), (3,4)(3, 4), (3,5)(3, 5), (3,6)(3, 6), (4,9)(4, 9), (4,10)(4, 10), (6,7)(6, 7), (8,9)(8, 9)라고 하자. 이때 정점은 1,2,5,7,6,3,8,91, 2, 5, 7, 6, 3, 8, 9 순서로 제거되므로 수열은 (5,5,3,6,3,4,9,4)(5, 5, 3, 6, 3, 4, 9, 4)가 된다.

이러한 수열로 결정되는 트리는 유일하다. 문제에서 설명한 수열이 주어졌을 때 트리의 간선을 모두 구해보자.

입력

첫째 줄에 정점의 수 NN이 주어진다. 둘째 줄에는 수열을 이루는 N−2N-2개의 정수가 주어진다. 항상 트리를 만들 수 있는 입력만 주어진다.

출력

트리의 모든 간선을 한 줄에 하나씩 출력한다. 간선을 출력할 때는 번호가 작은 정점을 앞에 출력한다. 간선을 앞의 수를 기준으로 비내림차순으로 출력하며, 앞의 수가 같다면 뒤의 수를 기준으로 오름차순으로 정렬해 출력한다.

제한

  • 3≤N≤1,0003 \le N \le 1{,}000

예제1

  1. 예제 1

    입력
    10
    5 5 3 6 3 4 9 4
    
    예상 출력
    1 5
    2 5
    3 4
    3 5
    3 6
    4 9
    4 10
    6 7
    8 9