import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
/*while (in.hasNextInt()) { // 注意 while 处理多个 case
int a = in.nextInt();
int b = in.nextInt();
System.out.println(a + b);
}*/
while (in.hasNextLine()) {
String line = in.nextLine();// 不能用in.nextInt()
String[] nums = line.split(" ");
int n1 = Integer.valueOf(nums[0]);
int n2 = Integer.valueOf(nums[1]);
if (n1 == n2) {
System.out.println("YES");
} else {
// 1000000000000000 32768
int num = Integer.parseInt("1000000000000000", 2);// 2表示把字符串是二进制
int count = 0;
boolean find = false;
while (count < 16) {// 最多只能移动16次
if (n1 >= num) { // 如果n1>=32768,表示n1最左位是1
// 先把最左位变成0
n1 = n1 ^ num;// 两个数相同异或则变成0,任何数异或0都等于它本身
// 再左移1位
n1 = n1 << 1;
// 再给右位加1
n1 = n1 + 1;
} else {// 如果n1最左位是0,则和普通左移是一样的
n1 = n1 << 1;
}
if (n1 == n2) {
find = true;
break;
}
count++;
}
if (find) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}
}
}