#include using namespace std; int main(void) { int depth = 0, count = 0; long long int X, Y; bool find = true; cin >> X >> Y; queue> que; que.push(complex (0, 0)); while(!que.empty()) { if(pow(8, depth) <= count) depth++; auto now_x = que.front().real(); auto now_y = que.front().imag(); //8つの場合においてアレ //1 if(now_x + 1 == X && now_y + 2 == Y) { break; } else { que.push(complex (now_x + 1, now_y + 2)); count++; } //2 if(now_x - 1 == X && now_y + 2 == Y) { break; } else { que.push(complex (now_x - 1, now_y + 2)); count++; } //3 if(now_x - 2 == X && now_y + 1 == Y) { break; } else { que.push(complex (now_x - 2, now_y + 1)); count++; } //4 if(now_x - 2 == X && now_y - 1 == Y) { break; } else { que.push(complex (now_x - 2, now_y - 1)); count++; } //5 if(now_x - 1 == X && now_y - 2 == Y) { break; } else { que.push(complex (now_x - 1, now_y - 2)); count++; } //6 if(now_x + 1 == X && now_y - 2 == Y) { break; } else { que.push(complex (now_x + 1, now_y - 2)); count++; } //7 if(now_x + 2 == X && now_y - 1 == Y) { break; } else { que.push(complex (now_x + 2, now_y - 1)); count++; } //8 if(now_x + 2 == X && now_y + 1 == Y) { break; } else { que.push(complex (now_x + 2, now_y + 1)); count++; } que.pop(); if(depth > 3) { find = false; break; } } if(find) cout << "YES" << endl; else cout << "NO" << endl; }