3초 정렬

아직 제출이 없습니다시간 제한2초메모리 제한1024 MB

문제

지금 여러분이 평화롭게 문제를 보고 있는 사이, 이미 강당 밖에는 극단 원리주의 민초파 테러리스트 김준원이 학교를 점령했다.

입력받은 수열을 3초 안에 오름차순으로 정렬된 상태로 만들지 않으면 강당에 설치해놓은 민초 폭탄이 터진다.

당신은 수열의 어떤 원소 A_iA\_i를 다른 수 XX로 바꿀 수 있다.

이 연산에는 1초가 걸린다.

3...

2...

1...

입력

첫째 줄에 당신이 정렬된 상태로 만들어야 하는 수열의 길이 NN이 주어진다.

둘째 줄에 수열의 원소들을 나타내는 NN개의 정수 A_1,A_2,,A_NA\_1, A\_2, \cdots , A\_N이 공백으로 구분되어 주어진다.

출력

3번의 연산 안에 수열을 오름차순으로 정렬된 상태로 만들 수 있으면,

  • 첫째 줄에 YES를 출력한다.

  • 둘째 줄부터, 수열을 정렬된 상태로 만들 수 있는 방법을 다음과 같은 형태로 출력한다.

    • 첫째 줄에, 연산 횟수 KK를 출력한다.
    • 이후, KK개의 줄에 걸쳐, 적용할 연산을 순서대로 출력한다.
      구체적으로, 각 줄에 두 정수 iiXX를 출력한다. 이는, 원소 A_iA\_iXX로 바꾸는 연산을 의미한다. (1iN1 \le i \le N, 1X1,000,000,0001 \leq X \leq 1\\,000\\,000\\,000)

연산의 횟수를 최소화할 필요가 없으며, 가능한 방법이 여럿 있으면 아무 방법이나 하나 출력해도 괜찮다. 같은 원소를 여러 번 수정해도 된다.

3번의 연산 안에 수열을 오름차순으로 정렬된 상태로 만들 수 없으면,

  • 첫째 줄에 NO를 출력한다.

제한

  • 1N 200,0001 \leq N \leq 200\\,000
  • 1A_i 1,000,000,0001 \leq A\_i \leq 1\\,000\\,000\\,000 (1iN1 \le i \le N)
  • 이미 오름차순으로 정렬된 수열은 주어지지 않는다.

힌트

수열 A_1,,A_NA\_1, \cdots, A\_N이 오름차순으로 정렬되어 있다는 것은, A_1A_2A\_1 \le A\_2, A_2A_3A\_2 \le A\_3, \cdots, A_N1A_NA\_{N-1} \le A\_N이라는 뜻이다.