// yukicoder: No.683 Two Operations No.3 // 2019.7.15 bal4u #include typedef long long ll; typedef struct { ll x, y; } Q; Q q[100000]; int top, end; int main() { ll x, y; scanf("%lld%lld", &x, &y); q[0].x = x, q[0].y = y, end = 1; while (top != end) { x = q[top].x, y = q[top++].y; if (x == 0 || y == 0) { puts("Yes"); return 0; } if (x < 0 || y < 0) continue; if ((x & 1) && (y & 1)) continue; if ((y & 1) == 0) q[end].x = x-1, q[end++].y = y >> 1; if ((x & 1) == 0) q[end].x = x >> 1, q[end++].y = y-1; } puts("No"); return 0; }