310583: CF1855C1. Dual (Easy Version)

Memory Limit:256 MB Time Limit:1 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

C1. Dual (Easy Version)time limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputPopskyy & tiasu - Dual

The only difference between the two versions of this problem is the constraint on the maximum number of operations. You can make hacks only if all versions of the problem are solved.

You are given an array $a_1, a_2,\dots, a_n$ of integers (positive, negative or $0$). You can perform multiple operations on the array (possibly $0$ operations).

In one operation, you choose $i, j$ ($1 \leq i, j \leq n$, they can be equal) and set $a_i := a_i + a_j$ (i.e., add $a_j$ to $a_i$).

Make the array non-decreasing (i.e., $a_i \leq a_{i+1}$ for $1 \leq i \leq n-1$) in at most $50$ operations. You do not need to minimize the number of operations.

Input

Each test contains multiple test cases. The first line contains the number of test cases $t$ ($1 \le t \le 500$). The description of the test cases follows.

The first line contains a single integer $n$ ($1 \le n \le 20$) — the length of the array.

The second line contains $n$ integers $a_1, a_2, \ldots, a_n$ ($-20 \le a_i \le 20$) — the array before performing the operations.

Output

For each test case, output your operations in the following format.

The first line should contain an integer $k$ ($0 \le k \le 50$) — the number of operations.

The next $k$ lines represent the $k$ operations in order. Each of these $k$ lines should contain two integers $i$ and $j$ ($1 \leq i, j \leq n$) — the corresponding operation consists in adding $a_j$ to $a_i$.

After all the operations, the array $a_1, a_2,\dots, a_n$ must be non-decreasing.

ExampleInput
10
2
2 1
4
1 2 -10 3
5
2 1 1 1 1
8
0 0 0 0 0 0 0 0
5
1 2 -4 3 -10
10
11 12 13 14 15 -15 -16 -17 -18 -19
7
1 9 3 -4 -3 -2 -1
3
10 9 8
20
1 -14 2 -10 6 -5 10 -13 10 7 -14 19 -5 19 1 18 -16 -7 12 8
20
-15 -17 -13 8 14 -13 10 -4 11 -4 -16 -6 15 -4 -2 7 -9 5 -5 17
Output
1
2 1
3
4 4
4 4
3 4
4
2 1
3 1
4 1
5 1
0
7
3 4
3 4
5 4
5 4
5 4
5 4
5 4
15
6 1
6 1
6 1
7 2
7 2
7 2
8 3
8 3
8 3
9 4
9 4
9 4
10 5
10 5
10 5
8
3 4
3 4
2 4
2 4
2 4
2 4
1 4
1 4
3
2 1
3 1
3 1
31
14 1
18 7
13 11
15 11
6 4
5 17
19 6
19 12
10 5
11 12
1 17
15 19
16 10
14 2
16 11
20 7
7 6
9 5
3 6
6 14
17 18
18 14
12 3
17 16
8 18
13 16
9 8
14 8
16 2
11 8
12 7
31
5 12
19 13
9 1
5 17
18 19
6 16
15 8
6 9
15 14
7 10
19 7
17 20
14 4
15 20
4 3
1 8
16 12
16 15
5 6
12 10
11 15
20 3
20 19
13 14
11 14
18 10
7 3
12 17
4 7
13 2
11 13
Note

In the first test case, by adding $a_1 = 2$ to $a_2$, we get the array $[2, 3]$ which is non-decreasing.

In the second test case, the array changes as:

  • $[1, 2, -10, 3]$
  • $[1, 2, -10, 6]$
  • $[1, 2, -10, 12]$
  • $[1, 2, 2, 12]$

In the third test case, the final array is $[2, 3, 3, 3, 3]$.

Input

暂时还没有翻译

Output

题目大意:给定一个整数的数组,通过最多50次操作,使得数组变为非递减序列。每次操作可以选择数组中的两个位置,将其中一个位置的值加到另一个位置上。

输入数据格式:第一行是一个整数t,表示测试用例的数量。每个测试用例包含两行,第一行是一个整数n,表示数组的长度,第二行包含n个整数,表示数组的初始值。

输出数据格式:对于每个测试用例,第一行是一个整数k,表示操作的次数。接下来k行,每行包含两个整数i和j,表示将位置j的值加到位置i上。最后,数组的值必须是递增的。题目大意:给定一个整数的数组,通过最多50次操作,使得数组变为非递减序列。每次操作可以选择数组中的两个位置,将其中一个位置的值加到另一个位置上。 输入数据格式:第一行是一个整数t,表示测试用例的数量。每个测试用例包含两行,第一行是一个整数n,表示数组的长度,第二行包含n个整数,表示数组的初始值。 输出数据格式:对于每个测试用例,第一行是一个整数k,表示操作的次数。接下来k行,每行包含两个整数i和j,表示将位置j的值加到位置i上。最后,数组的值必须是递增的。

加入题单

上一题 下一题 算法标签: