#CF2118B. 使其成为排列
使其成为排列
B. 使其成为排列
每个测试的时间限制:1 秒
内存限制:256 兆字节
有一个大小为 的矩阵 ,其中对所有 有 。
在一次操作中,你可以选择一行,并反转其中的任意一个子数组。
请找到一个不超过 次操作的序列,使得每一列都包含一个长度为 的排列。
可以证明这样的构造总是存在的。如果有多个解,输出任意一个。
数组 是数组 的一个子数组,如果 可以通过删除 的开头若干个元素和结尾若干个元素得到长度为 的排列是一个由 个互不相同的整数 到 组成的数组,顺序任意。例如, 是一个排列,但 不是( 出现了两次), 也不是( 但数组中包含 )。
输入
每个测试包含多个测试用例。第一行包含测试用例的数量 ()。
每个测试用例的第一行包含一个整数 ()——表示矩阵的行数和列数。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,第一行输出一个整数 (),表示你要执行的操作数量。
接下来的 行,每行输出一个操作。
输出操作的格式为 i l 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
注意
在第一个测试用例中,给出的操作序列是一个有效解。