#include <iostream>
using namespace std;
void zhuanhuan(string& rs, int num) {
int ys;
rs = "";
while (num > 0) {
ys = num % 2;
num /= 2;
rs = to_string(ys) + rs;
}
}
bool compare(string A, string B) {
int flag = 0; //flag=0表示没匹配到
char front;
for (int i = 0; i < 16; i++) {
// cout<<"A== "<<A<<endl<<"B== "<<B<<endl<<"====="<<endl;;
if (B.find(A)!=string::npos) {
flag = 1;
break;
}
front = A[0];
A.erase(0, 1);
A = A + front;
}
return flag;
}
int main() {
int a, b;
cin >> a >> b;
string A, B;
zhuanhuan(A, a);
zhuanhuan(B, b);
int lenA = A.length(), lenB = B.length();
for (int i = 0; i < 16 - lenA; i++)
A = '0' + A;
for (int i = 0; i < 16 - lenB; i++)
B = '0' + B;
if (compare(A, B)) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
}
// 64 位输出请用 printf("%lld")