import sys sys.setrecursionlimit(100000) def divide(a,x): if a==[]: return a if x==-1: return a if ((X>>x)&1)==0: la=[] ra=[] for i in a: if (i>>x)&1: ra.append(i) else: la.append(i) return divide(la,x-1)+divide(ra,x-1) else: zr=[] on=[] for i in a: if (i>>x)&1: on.append(i) else: zr.append(i) on.sort() zr.sort() if abs(len(on)-len(zr))>1: print("No") exit() if len(on)>=len(zr): valid=[] oc=0 zc=0 for i in range(len(a)): if i%2==0: valid.append(on[oc]) oc+=1 else: valid.append(zr[zc]) zc+=1 flg=True for i in range(len(a)-1): if (valid[i]^X)>=valid[i+1] or valid[i]>=(valid[i+1]^X): flg=False if flg: return valid if len(on)<=len(zr): valid=[] oc=0 zc=0 for i in range(len(a)): if i%2==1: valid.append(on[oc]) oc+=1 else: valid.append(zr[zc]) zc+=1 flg=True for i in range(len(a)-1): if (valid[i]^X)>=valid[i+1] or valid[i]>=(valid[i+1]^X): flg=False if flg: return valid N,X=map(int,input().split()) A=list(map(int,input().split())) A=divide(A,30) if len(A)!=N: print("No") exit() for i in range(N-1): if (A[i]^X)>=A[i+1] or A[i]>=(A[i+1]^X): print("No") exit() print("Yes")