#include using namespace std; typedef long long int ll; ll a, b; bool f(ll x, ll y) { /* queue > q; q.push(make_pair(x, y)); while (!q.empty()) { ll xx = q.front().first; ll yy = q.front().second; q.pop(); if (xx == a and yy == b) { cout << "Yes\n"; exit(0); } if (2*xx <= a and yy+1 <= b) q.push(make_pair(2*xx, yy+1)); if (xx+1 <= a and 2*yy <= b) q.push(make_pair(xx+1, 2*yy)); } */ /* cout << x << ":" << y << endl; if (x > a || y > b) return; if (x == a && y == b) { cout << "Yes\n"; exit(0); return; } f(2*x, y+1); f(x+1, 2*y); */ //cout << "x : " << x << " y: " << y << endl; if (x > y) swap(x, y); if (x == 0 and y == 0) return true; if (x == 0) return true; if (y == 0) return true; //two number are odd so impossible if (x % 2 == 1 and y % 2 == 1) return false; //two number even so try two case if (x % 2 == 0 and y % 2 == 0) return f(x/2, y-1) or f(x-1, y/2); if (x % 2 == 1 and y % 2 == 0) return f(x-1, y/2); if (x % 2 == 0 and y % 2 == 1) return f(x/2, y-1); return false; } int main() { cin.tie(0); ios::sync_with_stdio(false); cin >> a >> b; if (f(a, b) == true) cout << "Yes\n"; else cout << "No\n"; return 0; }