#include using namespace std; using ll = long long; #define rep(i,m,n) for(int i=m; i bool chmin(T& a, T b){ if(a > b){a = b; return true;} return false; } template bool chmax(T& a, T b){ if(a < b){a = b; return true;} return false; } template T gcd(T a, T b){ return a % b ? gcd(b, a % b) : b; } template T lcm(T a, T b){ return a / gcd(a, b) * b; } int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); ll n, z; cin >> n >> z; if(n > 2LL){ cout << "No" << endl; }else if(n == 1LL){ cout << (z == 1LL ? "No" : "Yes") << endl; }else{ for(ll x = 1LL; x < z; ++x){ ll hi = 1000100LL, lo = 0LL, md; while(abs(hi - lo) > 1LL){ md = (hi + lo) / 2LL; if(md*md > z*z - x*x) hi = md; else lo = md; } if(lo*lo + x*x == z*z && lo != 0LL){ cout << "Yes" << endl; return 0; } } cout << "No" << endl; } return 0; }