#CF2124D. 构造回文

构造回文

D. 构造回文
时间限制:2 秒
内存限制:256 兆字节

给定一个长度为 nn 的数组 aa 和一个整数 kk。你可以执行任意次以下操作:

  • 选择两个整数 llrr1lra1 \le l \le r \le |a|)满足 rl+1kr - l + 1 \ge k
  • 然后,选择一个下标 iilirl \le i \le r),使得 aia_i 是子数组 [al,al+1,,ar][a_l, a_{l+1}, \dots, a_r] 中第 kk 小的数。如果存在多个这样的 ii,你可以任选其一。例如,a=[1,2,2,1,3]a = [1,2,2,1,3]l=1,r=5l=1,r=5k=3k=3,那么可能的下标 ii2233
  • 然后,从 aa 中删除 aia_i,并将剩余部分拼接起来。

判断是否可以通过任意次操作(包括零次)得到一个回文数组^*。注意,空数组视为回文。

^* 数组 b=[b1,b2,,bm]b = [b_1, b_2, \dots, b_m] 是回文,当且仅当对于每个 1im1 \le i \le m,有 bi=bm+1ib_i = b_{m+1-i}


输入
每个测试包含多个测试用例。第一行包含测试用例数 tt1t1041 \le t \le 10^4)。

每个测试用例的第一行包含两个整数 nnkk1kn21051 \le k \le n \le 2 \cdot 10^5)。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n1ain1 \le a_i \le n)—— 数组 aa

保证所有测试用例的 nn 之和不超过 21052 \cdot 10^5


输出
对于每个测试用例,如果可能通过操作得到回文数组,则输出 "YES",否则输出 "NO"

输出大小写不敏感(例如 "yEs""yes""Yes""YES" 均视为肯定回答)。


样例
输入

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

输出

YES
YES
YES
NO
NO
YES
NO
YES

说明

  • 第一个测试用例:aa 本身已经是回文。
  • 第二个测试用例:可以通过两次操作得到回文:[1,1,2,1][1,2,1][1,1][1,1,2,1] \to [1,2,1] \to [1,1]
  • 第三个测试用例:可以通过一次操作得到回文:[2,3,4,5,3,2][2,3,4,3,2][2,3,4,5,3,2] \to [2,3,4,3,2]
  • 第四个和第五个测试用例:可以证明无论如何操作都无法得到回文。