from collections import * import sys import heapq import bisect import itertools dxdy1 = ((0, 1), (0, -1), (1, 0), (-1, 0)) dxdy2 = ((0, 1), (0, -1), (1, 0), (-1, 0), (1, 1), (-1, -1), (1, -1), (-1, 1)) dxdy3 = ((0, 1), (1, 0)) dxdy4 = ((1, 1), (1, -1), (-1, 1), (-1, -1)) INF = float("inf") MOD = 998244353 mod = 998244353 MOD2 = 10**9 + 7 mod2 = 10**9 + 7 # memo : len([a,b,...,z])==26 input = lambda: sys.stdin.readline().rstrip() mi = lambda: map(int, input().split()) li = lambda: list(mi()) A, B = mi() b1 = bin(A)[2:] b2 = bin(B)[2:] ok = True for i in range(len(b1)): if b1[-(i + 1)] == "1": if len(b2) - 1 < i: ok = False else: # print(len(b2) - 1, i, b2) if b2[-(i + 1)] == "0": ok = False if ok: print("Yes") else: print("No")