#include<cstdio>
using namespace std;
void binary(int n, char arr[]) {
    int res;
    int i = 0 ;
    while (n != 0) {
        res = n / 2;
        arr[i] = (n - res * 2);
        ++i;
        n = n / 2;
    }
}
void swap(char x[]) {
    int temp = x[0];
    for (int i = 0 ; i < 15 ; ++i ) {
        x[i] = x[i + 1];
    }
    x[15] = temp;
}
bool judge(char x1[], char x2[]) {
    for (int i = 0; i < 15; ++i) {
        if (x1[i] != x2[i]) {
            return true;
        } 
    }
            return false;     
    }

int main() {
    int n, m;
    while (scanf("%d%d", &n, &m) != EOF) {
        char x1[16] = {0};
        char x2[16] = {0};
        binary(n, x1);
        binary(m, x2);
        int i = 0;
        while ( judge(x1, x2)) {
            swap(x1);
            ++i;
            if (i == 16) {
                printf("NO\n");
                return 0;
            }else{
                i =i;
            }
        }
        printf("YES\n");
    }
    return 0;
}