Putata 有一个长度为 $n$ 的序列 $p$,其中 $p$ 是 $1, 2, \dots, n$ 的一个排列。Budada 最多可以执行 $2n + 1$ 次以下操作:
- 将序列切分成三个连续的非空部分,并交换第一部分和第三部分。形式化地,你需要选择两个整数 $x, y$,满足 $x > 0, y > 0, x + y < n$,序列将从 $p_1, \dots, p_x, p_{x+1}, \dots, p_{n-y}, p_{n-y+1}, \dots, p_n$ 变为 $p_{n-y+1}, \dots, p_n, p_{x+1}, \dots, p_{n-y}, p_1, \dots, p_x$。
Budada 希望在不超过 $2n + 1$ 次操作后,使该排列的字典序尽可能小。请帮助他找到一种执行操作的方法,使得排列的字典序尽可能小。
排列是一个数组,其中从 $1$ 到 $s$($s$ 为排列的大小)的每个整数恰好出现一次。
当且仅当满足以下条件时,排列 $a$ 的字典序小于排列 $b$: * 设 $x$ 是满足对于所有 $y \le x$ 都有 $a_y = b_y$ 的最小整数,则有 $x < n$ 且 $a_{x+1} < b_{x+1}$。
输入格式
输入包含多组测试数据。 第一行包含一个整数 $T$ ($1 \le T \le 120$),表示测试用例的数量。 对于每组测试数据,第一行包含一个整数 $n$ ($3 \le n \le 1000$),表示排列的长度。 第二行包含 $n$ 个整数,第 $i$ 个整数为 $p_i$ ($1 \le p_i \le n$),表示该排列。保证 $p$ 是 $1, 2, \dots, n$ 的一个排列。 保证所有测试数据中 $n$ 的总和不超过 $1000$。
输出格式
对于每组测试数据,第一行输出一个整数 $m$,表示操作次数。你需要保证 $0 \le m \le 2n + 1$。 随后输出 $m$ 行,每行包含两个整数 $x, y$,表示一次操作。你需要保证 $0 < x, 0 < y, x + y < n$。 请注意,你不需要最小化操作次数。
样例
输入 1
2 3 1 3 2 5 4 1 2 3 5
输出 1
0 2 2 1 1 1