#include <iostream> #include <vector> #include <string> #include <cstring> #include <math.h> #include <cmath> #include <limits.h> #include <map> #include <set> #include <queue> #include <algorithm> #include <functional> #include <stdio.h> using namespace std; long long MOD = 1000000007; int knight[8][2] = { {2,1}, {-2,1}, {2,-1}, {-2,-1}, {1,2}, {-1,2}, {1,-2}, {-1,-2} }; vector< pair<int,int> > P; void dfs( int d, int x, int y ) { P.push_back( make_pair(x,y) ); if ( d == 0 ) { return; } for ( int i = 0; i < 8; i++ ) { dfs( d-1, x+knight[i][0], y+knight[i][1] ); } } int main() { long long X,Y; cin >> X >> Y; dfs( 3, 0, 0 ); bool ans = false; for ( int i = 0; i < P.size(); i++ ) { if ( P[i].first == X && P[i].second == Y ) { ans = true; break; } } cout << ( ans ? "YES" : "NO" ) << endl; return 0; }