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");
                }
            }
        }
    }
}