#CF2118F. 移位与交换

移位与交换

F. 移位与交换

每次测试的时间限制:6 秒
每次测试的内存限制:512 兆字节


给你两个长度为 nn 的数组 aabb,以及一个整数 mm
数组只包含从 11mm 的整数,并且两个数组都包含从 11mm 的所有整数。

你可以对数组 aa 反复执行以下两种操作中的任意一种:

  1. 循环左移:将数组向左循环移位一次。
    ∗ 对于一个长度为 nn 的零索引数组 pp,左循环移位一次后得到数组 qq,满足 qi=p(i+1)modnq_i = p_{(i+1) \bmod n},其中 0i<n0 \le i < n

  2. 交换相邻元素:如果两个相邻元素的差至少为 22,则可以交换它们。

问:能否将第一个数组变成第二个数组?


输入格式
每个测试点包含多个测试用例。第一行包含测试用例的数量 tt1t1051 \le t \le 10^5)。
接下来每个测试用例的描述如下:

  • 第一行包含两个整数 nnmm2mn51052 \le m \le n \le 5 \cdot 10^5),分别表示数组长度和 aa 中不同整数的个数。
  • 第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1aim1 \le a_i \le m),表示数组 aa
  • 第三行包含 nn 个整数 b1,b2,,bnb_1, b_2, \dots, b_n1bim1 \le b_i \le m),表示数组 bb

保证两个数组都包含从 11mm 的所有整数。
保证所有测试用例的 nn 之和不超过 51055 \cdot 10^5


输出格式
对于每个测试用例,如果可以将第一个数组变为第二个数组,输出 "YES",否则输出 "NO"
大小写不敏感(例如 "yEs""yes""Yes""YES" 均视为肯定回答)。


示例输入

8
3 3
1 2 3
3 2 1
4 3
1 1 2 3
1 2 2 3
4 4
1 3 2 4
2 3 4 1
6 3
1 1 2 1 2 3
2 1 1 2 3 1
5 4
2 3 4 1 1
3 2 1 1 4
9 7
2 4 6 7 3 1 5 4 6
6 7 3 5 6 4 2 4 1
9 8
8 3 5 6 5 4 1 7 2
7 5 3 5 8 4 6 2 1
8 6
2 1 5 4 6 3 5 4
6 1 5 2 4 5 3 4

示例输出

YES
NO
YES
NO
YES
YES
NO
NO

示例解释
在第一个测试用例中,可以通过以下步骤将数组 aa 变成数组 bb

  1. [1,2,3][1, 2, 3] — 左移一次 → [2,3,1][2, 3, 1]
  2. 交换第 2 个和第 3 个元素(注意题目中索引从 1 开始,差为 31=22|3-1|=2 \ge 2,允许交换) → [2,1,3][2, 1, 3]
  3. 左移一次 → [1,3,2][1, 3, 2]
  4. 左移一次 → [3,2,1][3, 2, 1]

在第二个测试用例中,可以证明不可能通过给定操作将数组 aa 变成数组 bb