CF2121D 1709

题目描述

给出两个整数数组 $a_1, a_2, \ldots, a_n$ 和 $b_1, b_2, \ldots, b_n$ 。可以保证从 $1$ 到 $2 \cdot n$ 的每个整数恰好出现在其中一个数组中。 您需要执行一定数量的操作(可能为零),以**同时**满足以下两个条件: - 对于每个 $1 \leq i < n$,满足 $a_i < a_{i + 1}$ 和 $b_i < b_{i + 1}$ 。 - 对于每个 $1 \leq i \leq n$,满足 $a_i < b_i$ 。 在每个操作过程中,您只能执行以下三个操作之一: 1. 选择索引 $1 \leq i < n$ 并交换 $a_i$ 和 $a_{i + 1}$。 2. 选择索引 $1 \leq i < n$ 并交换 $b_i$ 和 $b_{i + 1}$。 3. 选择索引 $1 \leq i \leq n$ 并交换 $a_i$ 和 $b_i$ 。您不需要最大限度地减少操作次数,但总次数不得超过 $1709$。 找出**同时**满足以下两个条件的任何操作序列。

输入格式

**本题有多组测试数据** 第一行包含单个整数 $t(1 \leq t \leq 100)$ —测试样例的数量。测试样例的描述如下。 每个测试样例的第一行包含一个整数 $n(1 \leq n \leq 40)$ —数组 $a$ 和 $b$ 的长度。 每个测试样例的第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n(1 \leq a_i \leq 2 \cdot n)$ 。 每个测试样例的第三行包含 $n$ 个整数 $b_1, b_2, \ldots, b_n$ ( $1 \leq b_i \leq 2 \cdot n$ )。 保证从 $1$ 到 $2 \cdot n$ 的每个整数都出现在数组 $a$ 或数组 $b$ 中。

输出格式

对于每个测试样例,输出操作序列。 在每个测试样例的第一行中,输出操作的数量 $k$。请注意 $0 \leq k \leq 1709$ 。在每个测试用例的以下 $k$ 行中, 在每个测试样例的以下 $k$ 行中,输出操作本身: - 如果要交换值 $a_i$ 和 $a_{i + 1}$ ,请输出两个整数 $1$ 和 $i$。请注意 $1 \leq i < n$ 。 - 如果要交换值 $b_i$ 和 $b_{i + 1}$ ,请输出两个整数 $2$ 和 $i$。请注意 $1 \leq i < n$ 。 - 如果要交换值 $a_i$ 和 $b_i$ ,请输出两个整数 $3$ 和 $i$ 。请注意 $1 \leq i \leq n$。 可以证明,在给定的约束条件下,解总是存在的。

说明/提示

在第一个测试样例中,$a_1 < b_1$,不需要应用任何操作。 在第二个测试样例中,$a_1 > b_1$,应用该操作后,将交换这些值。 在第三个测试样例中,在应用操作后,$a = [1, 3]$ 和 $b = [2, 4]$ 。 在第四个测试样例中,在应用操作之后,$a = [1, 2]$ 和 $b = [3, 4]$ 。