#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; const int mod=998244353; const int dx[]={1,0,0,-1},dy[]={0,1,-1,0}; int solve(vectora,int x,bool f,int d){ if(a.size()==0&&f) return 3; if(a.size()<=1) return 1; if(d==0) return 0; if(x>>d-1&1){ if(f){ for(int i=0;i>d-1&1) return 0; return solve(a,x&~(1<l,r; for(int i=0;i>d-1&1) r.push_back(a[i]&~(1<1) return 0; vectorv; if(l.size()>=r.size()){ for(int i=0;i=1; } }else{ if(f){ vectorl1,r1,l2,r2; for(int i=0;i>d-1&1) r1.push_back(a[i]&~(1<>d-1&1) r2.push_back(a[i]&~(1<1) return 0; if(abs((int)r1.size()-(int)r2.size())>1) return 0; vectorvl,vr; if(l1.size()>=l2.size()){ for(int i=0;i=r2.size()){ for(int i=0;il2.size()){ if(r1.size()==r2.size()) return solve(vl,x,1,d-1)&solve(vr,x,1,d-1)>>1; else return solve(vl,x,1,d-1)&solve(vr,x,1,d-1); }else if(l1.size()l,r; for(int i=0;i>d-1&1) r.push_back(a[i]&~(1<>n>>x; for(int i=0;i>a[i]; sort(a,a+n); cout<<(solve(vector(a,a+n),x,0,30)?"Yes":"No")<