#include #include using namespace std; int K,X; int outbit; vectorans; void g7(int,int,int); void g4(int,int); void g11(int a,int b,int c) { g7(a,b,c); a=1<ok; for(int i=0;i<20;i++)if(i!=outbit)ok.push_back(i); if(cnt==21) { g7(ok[0],ok[1],ok[2]); g7(ok[3],ok[4],ok[5]); g7(ok[6],ok[7],ok[8]); return; } g11(ok[0],ok[1],ok[2]); if(cnt==20||cnt==25) { g7(ok[4],ok[5],ok[6]); if(cnt==20) { ans.push_back(0); ans.push_back(0); } else { g7(ok[7],ok[8],ok[9]); } return; } g11(ok[4],ok[5],ok[6]); if(cnt==23||cnt==24) { ans.push_back(0); if(cnt==24)ans.push_back(0); return; } if(cnt==29) { g7(ok[8],ok[9],ok[10]); return; } g4(ok[8],ok[9]); if(cnt==27||cnt==28) { ans.push_back(0); if(cnt==28)ans.push_back(0); } } main() { cin>>K>>X; if(K==0) { if(X==0) { ans.push_back(1); } else if((X+1&-X-1)==X+1) { X+=1; int cnt=0; while(X>1) { X/=2; cnt++; } outbit=-1; f(cnt); } } else { if(X==0) { ans.push_back(0); } else if(X==1) { ans.push_back(K); } else if((X&-X)==X) { int cnt=0; while(X>1) { X/=2; cnt++; } while(!(K>>outbit&1))outbit++; f(cnt); ans.push_back(K); } } if(ans.empty())cout<<"No"<