#include <algorithm>
#include <functional>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
#include <vector>
#include <list>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <bitset>
#include <climits>

#define all(c) (c).begin(), (c).end()
#define rep(i,n) for(int i=0;i<(n);i++)
#define pb(e) push_back(e)
#define mp(a, b) make_pair(a, b)
#define fr first
#define sc second

const int INF=100000000;
// (x-2,y-1),(x-2,y+1),(x-1,y-2),(x-1,y+2),(x+1,y-2),(x+1,y+2),(x+2,y-1),(x+2,y+1)
int dx[]={-2,-2,-1,-1,1,1,2,2};
int dy[]={-1,1,-2,2,-2,2,-1,1};
using namespace std;
typedef pair<int ,int > P;
typedef long long ll;

const int offset = 100;
bool ok[202][202];
void dfs(int x,int y,int n) {

    ok[x+offset][y+offset]=true;
    if(n==0) return;
    rep(k,8) {
        int ny=y+dy[k];
        int xn=x+dx[k];
        dfs(xn,ny,n-1);
    }
}
int main() {
    dfs(0,0,3);
    int x,y;
    cin>>x>>y;
    if(!((-100<=x&&x<=100)&&(-100<=y&&y<=100))) {
        cout<<"NO"<<endl;
        return 0;
    }
    if(ok[x+offset][y+offset]) {
        cout<<"YES"<<endl;
    }
    else {
        cout<<"NO"<<endl;
    }

    return 0;
}