def dfs(start=0,goal=None): parents={} p,t=start,0 parents[p]=-2 next_set=[(p,t)] if p==goal: return t while next_set: p,t=next_set.pop() for q in make_edges(p): if q in parents: continue if q[0]==0 or q[1]==0: return 1 parents[q]=p next_set.append((q,t+1)) return 0 def make_edges(p): a,b=p if a%2==0: yield a//2, b-1 if b%2==0: yield a-1, b//2 A,B=map(int, input().split()) res=dfs(start=(A,B)) print("Yes" if res else "No")