숫자 놀이

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

요약
칠판에 적힌 1부터 N까지의 정수에서 두 수를 골라 차를 적는 과정을 반복할 때, 마지막에 남는 수를 가장 크게 만드는 방법을 찾고 그 순서를 출력한다.
난이도

보통10점 중 4점

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

문제

칠판에 11부터 NN까지 NN개의 서로 다른 정수를 적고, 칠판에 정수가 하나만 남을 때까지 다음을 반복한다.

  • 칠판에 쓰여 있는 정수 중 두 개를 선택하여 지우고 그 두 수의 차이를 적는다.

예를 들어, 1,2,3,41,2,3,4가 적혀 있을 때 11과 44를 선택하면 칠판에는 2,3,32,3,3이 적혀 있게 되고, 그다음 두 개의 33을 선택하면 2,02,0이 적혀 있게 된다.

마지막에 남는 정수를 가장 크게 하려면 어떻게 해야 할까?

입력

첫 번째 줄에 정수 NN이 주어진다. (2≤N≤200,0002\le N\le 200\\, 000)

출력

첫 번째 줄에는 마지막에 남을 수 있는 가장 큰 정수를 출력한다.

그다음 N−1N-1개의 줄에 걸쳐서 그 정수를 남기는 방법을 출력한다. 모든 1≤i≤N−11 \leq i \leq N-1에 대해, i+1i+1번째 줄에는 ii번째로 선택한 두 정수를 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    2
    
    예상 출력
    1
    2 1