#CF1984G. 魔法技巧 II

魔法技巧 II

G. 魔法技巧 II

  • 时间限制:每个测试点 22
  • 内存限制:每个测试点 256256 兆字节

Oscar 第一个魔术 tricks 的秘密已经被揭穿了!为了仍然给 Lura 留下深刻印象,他想出了一个新主意:他仍然想要对一个排列 p1,p2,,pnp_1, p_2, \dots, p_n(它是 [1,2,,n][1,2,\dots,n] 的一个排列)进行排序。

这一次,他选择一个整数 kk。他想通过以下操作若干次,将排列按非递减顺序排序:

  • 选取一个长度为 kk 的连续子数组并将其从 pp 中移除。
  • 将该连续子数组重新插入到 pp 的任意位置(可以是最前面或最后面)。

为了尽可能引人注目,Oscar 想要选择最大的 kk,使得他能够将他的排列排序。请帮助他找出最大的 kk,以及一个能够将排列排序的操作序列。你不需要最小化操作次数,但允许使用的操作次数最多为 5n25n^2

已知对于最大的 kk(使得你能通过任意次操作将排列排序),你同样可以在至多 5n25n^2 次操作内将其排序。

输入

第一行包含一个整数 tt1t1031 \le t \le 10^3)——测试用例的数量。

每个测试用例的第一行包含一个整数 nn5n1035 \le n \le 10^3)——排列的长度。

每个测试用例的第二行包含一个排列 p1,p2,,pnp_1, p_2, \dots, p_n,它是 [1,2,,n][1,2,\dots,n] 的一个排列。

所有测试用例的 nn 之和不超过 21032 \cdot 10^3

输出

对于每个测试用例,首先在新的一行输出所选的 kk 值(1kn1 \le k \le n)。

然后,输出一个整数 mm0m5n20 \le m \le 5n^2)——使用的操作次数。

接下来 mm 行,每行输出两个整数 iijj1i,jnk+11 \le i, j \le n-k+1),表示一次操作:移除从下标 ii 开始、长度为 kk 的子数组,并将其重新插入到下标 jj 处。

示例

输入

3
5
5 1 2 3 4
5
2 3 5 4 1
6
1 2 3 4 5 6

输出

4
1
2 1
3
2
1 3
2 1
6
0

在第一个测试用例中,只需将最后四个数字移到前面即可。

在第二个测试用例中,可以证明 k=4k=4k=5k=5 是不可能的。当 k=3k=3 时,我们可以将前三个数字移到末尾,然后将中间三个数字移到前面,从而将排列排序。

在第三个测试用例中,排列已经有序。我们可以取 k=6k=6 且不使用任何操作。