#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")