#CF2118B. 使其成为排列

使其成为排列

B. 使其成为排列

每个测试的时间限制:1 秒
内存限制:256 兆字节

有一个大小为 n×nn \times n 的矩阵 AA,其中对所有 1i,jn1 \le i, j \le nAi,j=jA_{i,j} = j

在一次操作中,你可以选择一行,并反转其中的任意一个子数组^*

请找到一个不超过 2n2n 次操作的序列,使得每一列都包含一个长度为 nn 的排列^\dagger

可以证明这样的构造总是存在的。如果有多个解,输出任意一个。


数组 aa 是数组 bb 的一个子数组,如果 aa 可以通过删除 bb 的开头若干个元素和结尾若干个元素得到长度为 nn 的排列是一个由 nn 个互不相同的整数 11nn 组成的数组,顺序任意。例如,[2,3,1,5,4][2,3,1,5,4] 是一个排列,但 [1,2,2][1,2,2] 不是(22 出现了两次),[1,3,4][1,3,4] 也不是(n=3n=3 但数组中包含 44)。


输入
每个测试包含多个测试用例。第一行包含测试用例的数量 tt1t1001 \le t \le 100)。
每个测试用例的第一行包含一个整数 nn3n50003 \le n \le 5000)——表示矩阵的行数和列数。
保证所有测试用例的 nn 之和不超过 50005000


输出
对于每个测试用例,第一行输出一个整数 kk0k2n0 \le k \le 2n),表示你要执行的操作数量。
接下来的 kk 行,每行输出一个操作。

输出操作的格式为 i l r(1lrn1 \le l \le r \le n1in1 \le i \le n),表示反转第 ii 行的子数组 Ai,l,Ai,l+1,,Ai,rA_{i,l}, A_{i,l+1}, \dots, A_{i,r}


示例

输入

2
3
4

输出

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

注意
在第一个测试用例中,给出的操作序列是一个有效解。