这一天,姬哥正在补题,他看到了这样一个题:
给定一个正整数序列 ai(1≤i≤n,1≤n≤1000000,1≤ai≤1018)a_i(1\leq i\leq n,1\leq n\leq 1000000,1\leq a_i\leq 10^{18})ai(1≤i≤n,1≤n≤1000000,1≤ai≤1018) 与一个整数 k(1≤k≤1018)k(1\leq k\leq 10^{18})k(1≤k≤1018),请问序列中是否存在两个正整数 ai,aj(i≠j)a_i,a_j(i\neq j)ai,aj(i=j) 满足 2×(ai&aj)=k−(ai⊕aj)2\times(a_i\&a_j)=k-(a_i\oplus a_j)2×(ai&aj)=k−(ai⊕aj)。其中 ⊕\oplus⊕ 代表 xor(位异或)运算,&\&& 代表 and(位与)运算。
姬哥直呼水题,他不屑于做这样的题,所以请你帮他解决。若序列中存在这样两个数满足条件则输出 YES,否则输出 NO。
第一行两个正整数 n,kn,kn,k,表示序列长度以及给定的正整数。
第二行 nnn 个正整数用空格分隔,表示序列 aia_iai。
输出一行 YES 或 NO,含义见题目描述。
5 10 2 3 5 5 6
YES
a3,a4a_3,a_4a3,a4 满足条件,2×(5&5)=10−(5⊕5)2\times(5\& 5)=10-(5\oplus 5)2×(5&5)=10−(5⊕5)。