#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long int ll; //#include using namespace std; ll gcd(ll a, ll b) { if (a < b)swap(a, b); if (b == 0)return a; return gcd(b, a % b); } int lcm(int a, int b) { return a * b / gcd(a, b); } long long mod_exp(long long b, long long e, long long m) { if (e > 0 && b == 0) return 0; long long ans = 1; b %= m; while (e > 0) { if ((e & 1LL)) ans = (ans * b) % m; e = e >> 1LL; b = (b * b) % m; } return ans; } int main() { int Q; Q = 1; //cin >> Q; while (Q--) { ll x, y; cin >> x >> y; if (!x && !y) { cout << "YES"; return 0; } int a[10] = {-2,-2,-1,-1,1,1,2,2}; int b[10] = { 1,-1,2,-2,2,-2,1,-1 }; vector>t; t.push_back({ 0,0 }); for (int I = 0; I < 3; I++) { vector>p; for (int J = 0; J < t.size(); J++) { for (int i = 0; i < 8; i++) { if (x == t[J].first + a[i] && y == t[J].second + b[i]) { cout << "YES"; return 0; } p.push_back({ t[J].first + a[i],t[J].second + b[i] }); } } t = p; } cout << "NO"; } return 0; }