Codeforces Round 1011 (Div. 2)
B
Serval and Final MEX
Codeforces
1200
原题
← AC →
翻译中…

You are given an array $a$ consisting of $n\ge 4$ non-negative integers.

翻译中…

You need to perform the following operation on $a$ until its length becomes $1$:

翻译中…
  • Select two indices $l$ and $r$ ($1\le {\color{red}{ l \lt r }} \le |a|$), and replace the subarray $[a_l,a_{l+1},\ldots,a_r]$ with a single integer $\operatorname{mex}([a_l,a_{l+1},\ldots,a_r])$, where $\operatorname{mex}(b)$ denotes the minimum excluded (MEX)$^{\text{∗}}$ of the integers in $b$. In other words, let $x=\operatorname{mex}([a_l,a_{l+1},\ldots,a_r])$, the array $a$ will become $[a_1,a_2,\ldots,a_{l-1},x,a_{r+1},a_{r+2},\ldots,a_{|a|}]$. Note that the length of $a$ decreases by $(r-l)$ after this operation.
翻译中…

Serval wants the final element in $a$ to be $0$. Help him!

翻译中…

More formally, you have to find a sequence of operations, such that after performing these operations in order, the length of $a$ becomes $1$, and the final element in $a$ is $0$.

翻译中…

It can be shown that at least one valid operation sequence exists under the constraints of the problem, and the length of any valid operation sequence does not exceed $n$.

翻译中…

Note that you do not need to minimize the number of operations.

翻译中…

$^{\text{∗}}$The minimum excluded (MEX) of a collection of integers $b_1, b_2, \ldots, b_k$ is defined as the smallest non-negative integer $x$ which does not occur in the collection $b$.

翻译中…

Input

翻译中…

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

翻译中…

The first line of each test case contains a single integer $n$ ($4\le n\le 5000$) — the length of the array $a$.

翻译中…

The second line contains $n$ integers $a_1, a_2, \ldots, a_n$ ($0\le a_i\le n$) — the elements of the array $a$.

翻译中…

It is guaranteed that the sum of $n$ over all test cases does not exceed $5000$.

翻译中…

Output

翻译中…

For each test case, output a single integer $k$ ($0\le k\le n$) in the first line of output — the length of the operation sequence.

翻译中…

Then, output $k$ lines, the $i$-th line containing two integers $l_i$ and $r_i$ ($1\le l_i \lt r_i\le |a|$) — the two indices you choose in the $i$-th operation, where $|a|$ denotes the length of the array before this operation.

翻译中…

If there are multiple answers, you may print any of them.

翻译中…

Note

翻译中…

In the first test case, since $\operatorname{mex}([1,2,3,4])=0$, after the only operation, the array becomes $[0]$.

翻译中…

In the second test case, the array $a$ changes as follows: $$ [\underline{0,1},0,0,1]\to [\underline{2,0},0,1]\to [\underline{1,0},1]\to [\underline{2,1}]\to [0]. $$

翻译中…

In the third test case, the array $a$ changes as follows: $$ [0,0,0,0,\underline{0,0}]\to [0,0,\underline{0,0},1]\to [\underline{0,0},1,1]\to [\underline{1,1,1}]\to [0]. $$

翻译中…

样例

Input #1
6
4
1 2 3 4
5
0 1 0 0 1
6
0 0 0 0 0 0
6
5 4 3 2 1 0
4
0 0 1 1
4
1 0 0 0
Output #1
1
1 4
4
1 2
1 2
1 2
1 2
4
5 6
3 4
1 2
1 3
3
4 5
4 5
1 4
2
1 2
1 3
2
2 4
1 2
InputCopy OutputCopy
题目信息
题号
2085B
时间限制
1 s
内存限制
256 MB
标签
构造
模拟

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。