시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 512 MB 0 0 0 0.000%

## 문제

You are given an integer S and an array A consisting of N non-negative integers, indexed from 1. You are allowed to perform the following operation on it: choose any index i (1 ≤ i ≤ N), choose one of its neighbors j (1 ≤ j ≤ N, either j = i − 1 or j = i + 1) and replace Ai with (Ai ⊕ Aj) where ⊕ is the bitwise XOR operation.

You can see the definition of XOR at the end of the statement.

Your goal is to transform A into a sorted array:

• If S = 1 then the final array must be strictly increasing, i.e. Ai < Ai+1 for 1 ≤ i < N
• If S = 2 then the final array must be non-decreasing, i.e. Ai ≤ Ai+1 for 1 ≤ i < N

Find any sequence of operations that achieves your goal.

You aren’t required to minimize the number of operations as long as their amount doesn’t exceed 40000.

## 입력

First line contains two integers: N and S

Next line contains N integers: elements of A

## 출력

First line of output should contain one integer K (0 ≤ K ≤ 40000) - the number of operations.

Next K lines should contain two integers each, describing operations in chronological order: the first integer is an index i of the element which is being replaced and the second one is an index j of another element involved in the operation.

• 1 ≤ S ≤ 2
• 2 ≤ N ≤ 1000
• 0 ≤ Ai < 220

## 예제 입력 1

5 1
3 2 8 4 1


## 예제 출력 1

3
1 2
4 3
5 4


## 예제 입력 2

5 2
4 4 2 0 1


## 예제 출력 2

3
3 2
4 3
5 4


## 힌트

First example output explanation: [3, 2, 8, 4, 1] -> [1, 2, 8, 4, 1] -> [1, 2, 8, 12, 1] -> [1, 2, 8, 12, 13]

Second example output explanation: [4, 4, 2, 0, 1] -> [4, 4, 6, 0, 1] -> [4, 4, 6, 6, 1] -> [4, 4, 6, 6, 7]

When performing XOR operation between a and b bits the result will be 0 if a=b and 1 otherwise.

When performing bitwise XOR operation between integers a and b, XOR results will be carried out for each of the corresponding bits:

• 75 ⊕ 29 = 10010112 ⊕ 00111012 = 10101102 = 86

In C/C++/Java you can use the "^" operator to perform XOR.