JOKER

시간 제한1초메모리 제한128 MB

요약
섞이고 일부 숫자가 바뀐 K개의 카드 제거 기록을 재배열해 조커를 제외한 모든 카드를 제거할 수 있는지 판별하고 가능한 실행 순서를 출력합니다.
난이도

어려움10점 중 8점

유형
그리디, 시뮬레이션, 구간
정답자
아직 제출이 없습니다

문제

한 장이 조커인 N장의 카드가 왼쪽에서 오른쪽으로 놓여 있다. 조커는 항상 맨 오른쪽 카드이다.

한 번의 이동에서 현재 놓인 카드의 위치 A와 B를 고른다. 두 위치의 카드는 모두 조커가 아니어야 하며, A번 위치부터 B번 위치까지의 모든 카드를 함께 제거한다. 제거한 뒤에는 오른쪽에 있던 카드들이 순서를 유지한 채 빈칸을 메운다. 이 이동은 (A, B)로 기록된다.

모든 이동이 끝나면 테이블에는 조커 한 장만 남아야 한다. 그러나 기록된 K개의 이동은 임의의 순서로 섞였고, 일부 숫자가 바뀌었을 수도 있다.

주어진 K개의 기록을 어떤 순서로 실행했을 때 조커만 남길 수 있는지 판별하고, 가능하다면 그런 실행 순서 하나를 출력하라.

입력

첫째 줄에 카드의 수 N과 이동의 수 K가 공백으로 구분되어 주어진다.

1 <= K < N <= 1,000,000,000

다음 K개의 줄에는 기록된 이동 (A, B)를 나타내는 두 정수 A와 B가 공백으로 구분되어 주어진다. 항상 A <= B이다.

출력

가능한 실행 순서가 있다면 K개의 줄에 이동을 실행할 순서대로 출력한다. 각 줄에는 해당 이동의 A와 B를 공백으로 구분해 출력한다.

가능한 순서가 없다면 -1을 출력한다.

예제3

  1. 예제 1

    입력
    3 1
    1 3
    
    예상 출력
    -1
    
  2. 예제 2

    입력
    5 2
    2 3
    1 2
    
    예상 출력
    2 3
    1 2
    
  3. 예제 3

    입력
    9 3
    1 3
    4 4
    3 6
    
    예상 출력
    3 6
    4 4
    1 3