#CF2114G. 构建一个数组
构建一个数组
G. 构建一个数组
每个测试点的时间限制:1 秒
内存限制:512 MB
昨天,Dima 发现了一个空数组,并决定向其中添加一些整数。他可以无限次执行以下操作:
- 在数组的左端或右端添加任意一个整数。
- 然后,只要数组中存在一对相邻的相同元素,它们就会被替换为它们的和。
可以证明,数组中同时最多只能存在一对这样的相邻相同元素。
例如,如果数组是 ,我们在左端添加数字 ,数组首先变成 ,接着前两个元素被替换为 ,数组变为 ,然后再变为 。
在恰好执行了 次操作后,他认为自己得到了一个长度为 的数组 ,但他不记得具体进行了哪些操作。请判断是否存在某个长度为 的操作序列,使得从空数组出发能够得到给定的数组 ,如果不可能则输出 "NO"。
输入
第一行包含一个整数 (),表示测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含两个整数 和 (,),分别表示最终数组的长度和操作次数。
第二行包含 个整数 (,),表示最终数组的元素。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,如果不存在长度为 的合适操作序列,输出 "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