実行時間制限: 2 sec / メモリ制限: 256 MB
配点 : 600 点
問題文
すぬけ君は長さ N の数列 a を持っています。a の (1-indexedでの) i 番目の数は a_{i} です。
すぬけ君は以下の操作を何度でも行うことができます。
- 操作:1 以上 N 以下の整数 x,y を選び、a_y に a_x を加算する。
すぬけ君はこの操作を 0 回以上 2N 回以下行って a が下記の条件を満たすようにしたいです。そのような操作手順の一例を示してください。 なお、この問題の制約下で、条件を満たすような操作の手順が必ず存在することが証明できます。
- 条件:a_1 \leq a_2 \leq ... \leq a_{N}
制約
- 2 \leq N \leq 50
- -10^{6} \leq a_i \leq 10^{6}
- 与えられる入力は全て整数
入力
入力は以下の形式で標準入力から与えられる。
N a_1 a_2 ... a_{N}
出力
操作回数(これを m とする)を 1 行目に出力せよ。 続く m 行のうち i 行目には i 番目の操作で選んだ数 x,y を空白区切りで出力せよ。 m が 0 以上 2N 以下であり、m 回の操作後に a が条件を満たしていれば正解となる。
入力例 1
3 -2 5 -1
出力例 1
2 2 3 3 3
- 1 番目の操作により a = (-2,5,4) となります
- 2 番目の操作により a = (-2,5,8) となり、条件を満たします
入力例 2
2 -1 -3
出力例 2
1 2 1
- 1 番目の操作により a = (-4,-3) となり、条件を満たします
入力例 3
5 0 0 0 0 0
出力例 3
0
- すでに条件を満たしています
Score : 600 points
Problem Statement
Snuke has an integer sequence, a, of length N. The i-th element of a (1-indexed) is a_{i}.
He can perform the following operation any number of times:
- Operation: Choose integers x and y between 1 and N (inclusive), and add a_x to a_y.
He would like to perform this operation between 0 and 2N times (inclusive) so that a satisfies the condition below. Show one such sequence of operations. It can be proved that such a sequence of operations always exists under the constraints in this problem.
- Condition: a_1 \leq a_2 \leq ... \leq a_{N}
Constraints
- 2 \leq N \leq 50
- -10^{6} \leq a_i \leq 10^{6}
- All input values are integers.
Input
Input is given from Standard Input in the following format:
N a_1 a_2 ... a_{N}
Output
Let m be the number of operations in your solution. In the first line, print m. In the i-th of the subsequent m lines, print the numbers x and y chosen in the i-th operation, with a space in between. The output will be considered correct if m is between 0 and 2N (inclusive) and a satisfies the condition after the m operations.
Sample Input 1
3 -2 5 -1
Sample Output 1
2 2 3 3 3
- After the first operation, a = (-2,5,4).
- After the second operation, a = (-2,5,8), and the condition is now satisfied.
Sample Input 2
2 -1 -3
Sample Output 2
1 2 1
- After the first operation, a = (-4,-3) and the condition is now satisfied.
Sample Input 3
5 0 0 0 0 0
Sample Output 3
0
- The condition is satisfied already in the beginning.