만드는 중입니다

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

숫자 놀이

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

요약
칠판에 1부터 N까지 적힌 수가 있습니다. 두 수를 골라 차의 절댓값으로 바꾸는 과정을 반복하여 마지막에 남는 수를 최대로 만들고, 연산 순서를 출력합니다.
난이도

보통10점 중 6점

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

문제

칠판에 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 \le i \le N-1에 대해, i+1i+1번째 줄에는 ii번째로 선택한 두 정수를 공백으로 구분하여 출력한다.

예제1

  1. 예제 1

    입력
    2
    
    예상 출력
    1
    2 1