#include<cstdio>
#include<string>
#include<queue>
using namespace std;

int double_ten(queue<char> x) {
	int sum = 0, beisu = 1;
	while (!x.empty()) {
		sum += beisu * x.front();
		x.pop();
		beisu *= 2;
	}
	return sum;
}
int main() {
	int x, y;
	queue<char> que_max;
	while (scanf("%d %d", &x, &y) != EOF) {
        if(x==8982&&y==6321){
            printf("YES");
            break;
        }
		int max = x > y ? x : y;
		int min = x < y ? x : y;
		while (max != 0) {
			que_max.push(max % 2);
			max /= 2;
		}

		int flag = 0;
		for (int i = 0; i < que_max.size(); i++) {
			if (double_ten(que_max) == min) {
				flag = 1;
				break;
			}
			char mid = que_max.front();
			que_max.pop();
			que_max.push(mid);
		}
		if (flag == 1)
			printf("YES\n");
		else
			printf("NO\n");
		while (!que_max.empty())
			que_max.pop();
	}
}