给你两个长度为 $n$ 的排列 $p$ 和 $q$。你可以对第一个排列进行零次或多次以下操作:
选择 $1 \le i < j \le n$ 使得 $p_i < p_j$,并交换 $p_i$ 和 $p_j$。
你需要判断是否可以使 $p$ 变得与 $q$ 相等。如果可以,你需要找到任意一组可行的操作序列。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例的数量 $t$ ($1 \le t \le 100$)。接下来是测试用例的描述。
每个测试用例的第一行包含一个整数 $n$ ($1 \le n \le 2000$)。
第二行包含 $n$ 个互不相同的整数 $p_1, p_2, \dots, p_n$ ($1 \le p_i \le n$)。
第三行包含 $n$ 个互不相同的整数 $q_1, q_2, \dots, q_n$ ($1 \le q_i \le n$)。
给定的 $p$ 和 $q$ 均为 $\{1, 2, \dots, n\}$ 的排列。
所有测试用例中 $n$ 的总和不超过 2000。
输出格式
对于每个测试用例,判断是否存在一种方法使 $p$ 变得与 $q$ 相等。
如果存在,第一行输出 "YES"。第二行输出一个整数 $k$,表示你希望执行的操作次数。接下来的 $k$ 行,你应该输出具体的操作。
为了描述交换 $p_i$ 和 $p_j$ ($1 \le i < j \le n$) 的操作,输出一行格式为 "i j" 的内容。
如果不存在,在单行中输出 "NO"。
如果存在多个可行答案,输出其中任意一个即可。
样例
样例输入 1
6 2 1 2 2 1 3 1 2 3 3 2 1 5 3 5 1 2 4 4 5 1 3 2 6 2 3 6 4 1 5 3 4 5 6 2 1 6 2 3 6 4 1 5 5 3 6 4 2 1 1 1 1
样例输出 1
YES 1 1 2 YES 3 1 2 1 3 2 3 YES 2 1 5 4 5 NO YES 6 1 2 1 4 1 6 2 4 4 6 5 6 YES 0
说明
在第二个测试用例中,$p$ 为 1 2 3。一种可能的操作序列为:"1 2"、"1 3"、"2 3"。
在第一次交换后,$p$ 变为 2 1 3;在第二次交换后,它变为 3 1 2;在第三次交换后,它变为 3 2 1。