#CF2114G. 构建一个数组

构建一个数组

G. 构建一个数组
每个测试点的时间限制:1 秒
内存限制:512 MB

昨天,Dima 发现了一个空数组,并决定向其中添加一些整数。他可以无限次执行以下操作:

  1. 在数组的左端右端添加任意一个整数。
  2. 然后,只要数组中存在一对相邻的相同元素,它们就会被替换为它们的和。

可以证明,数组中同时最多只能存在一对这样的相邻相同元素。

例如,如果数组是 [3,6,4][3,6,4],我们在左端添加数字 33,数组首先变成 [3,3,6,4][3,3,6,4],接着前两个元素被替换为 66,数组变为 [6,6,4][6,6,4],然后再变为 [12,4][12,4]

恰好执行了 kk 次操作后,他认为自己得到了一个长度为 nn 的数组 aa,但他不记得具体进行了哪些操作。请判断是否存在某个长度为 kk 的操作序列,使得从空数组出发能够得到给定的数组 aa,如果不可能则输出 "NO"。


输入
第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nnkk1n1051 \le n \le 10^5nk106n \le k \le 10^6),分别表示最终数组的长度和操作次数。

第二行包含 nn 个整数 aia_i1ai1091 \le a_i \le 10^9ai1aia_{i-1} \neq a_i),表示最终数组的元素。

保证所有测试用例的 nn 之和不超过 10510^5


输出
对于每个测试用例,如果不存在长度为 kk 的合适操作序列,输出 "NO";否则输出 "YES"。

你可以以任何大小写输出 "YES" 和 "NO"(例如,"yEs"、"yes"、"Yes" 和 "YES" 都会被识别为肯定答案)。


示例
输入:

8
3 3
2 1 4
3 7
2 1 4
2 15
2 16
3 10
256 32 1
3 289
768 96 1
3 290
768 96 1
5 7
5 1 6 3 10
4 6
6 8 5 10

输出:

YES
NO
YES
YES
YES
NO
YES
YES