// #define _GLIBCXX_DEBUG // for STL debug (optional) #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long int; using int64 = long long int; template void chmax(T &a, T b) {a = max(a, b);} template void chmin(T &a, T b) {a = min(a, b);} template void chadd(T &a, T b) {a = a + b;} int dx[] = {0, 0, 1, -1}; int dy[] = {1, -1, 0, 0}; const int INF = 1LL << 29; const ll LONGINF = 1LL << 60; const ll MOD = 1000000007LL; map< pair, bool > mp; bool solve(ll A, ll B) { if(A == 0 or B == 0) return true; if(A % 2 == 1 and B % 2 == 1) return false; if(mp.count(make_pair(A, B))) return mp[ make_pair(A, B) ]; bool b = false; if(A % 2 == 1) b = solve(A-1, B/2); else if(B % 2 == 1) b = solve(A/2, B-1); else { { ll X = A-1, Y = B/2; if(X % 2 == 0 or Y % 2 == 0) b |= solve(X, Y); } { ll X = A/2, Y = B-1; if(X % 2 == 0 or Y % 2 == 0) b |= solve(X, Y); } } return mp[ make_pair(A, B) ] = b; } int main() { ll A, B; cin >> A >> B; cout << (solve(A, B) ? "Yes" : "No") << endl; return 0; }