夜揽星河入梦
题号:NC311155
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}给定一维棋盘上的 n 个黑色棋子,第 i 个棋子的坐标是 a_i,任意两个棋子的坐标互不相同。若存在 m 个棋子满足如下情况,我们则认为是 m 子连珠:
\hspace{23pt}\bullet\,将这 m 个棋子的坐标按照从小到大排序后,它们构成一个公差为 1等差数列
\hspace{15pt}你现在需要判断:是否可以再下一个黑色棋子,使得局面出现 m 子连珠。保证初始局面不存在 m 子连珠。

【名词解释】
\hspace{15pt}等差数列:是一种数列,满足相邻两项之差相等,这个差值被称作等差数列的公差。例如,对于长度为 n 的数列 a_1,a_2,\dots,a_n,若存在常数 d,使得对于任意的 i\left(1\leqq i<n\right),都有 a_{i+1}-a_i=d,则称这个数列是等差数列,d 是这个数列的公差。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leqq T\leqq 10^4\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行两个整数 n,m \left(1\leqq n\leqq 2\times 10^5;\,2\leqq m\leqq 10^9\right),表示初始给定的黑色棋子数量和连珠数量。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,a_3,\cdots,a_n \left(1\leqq a_i\leqq 10^9\right),表示棋子的坐标,保证任意两个棋子的坐标互不相同。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2\times 10^5

输出描述:

\hspace{15pt}对于每一组测试数据,新起一行。如果可以使得局面出现 m 子连珠,输出 \texttt{YES},否则输出 \texttt{NO}
示例1

输入

复制
3
3 3
1 2 5
3 10
1 2 3
3 2
5 1 3

输出

复制
YES
NO
YES

说明

\hspace{15pt}对于第一组测试数据,可以在 3 的位置再下一个黑色棋子,此时,棋盘上 1,2,3 三个棋子构成一个公差为 1 的等差数列,因此局面出现 3 子连珠。

\hspace{15pt}对于第二组测试数据,无论如何再下一个黑色棋子,都无法使得局面出现 10 子连珠,因为棋盘上至多只有 4 个棋子。