//include,using,define等 #pragma region header #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // =============================================================== //using系 #pragma region header using namespace std; using ll = long long; using lint = long long; using vl = vector; using vvl = vector>; using vvi = vector>; using vs = vector; using vc = vector; using vcc = vector>; using vm = vector; using vmm = vector>; using pii = pair; using psi = pair; using ld = long double; using ull = unsigned long long; using ui = unsigned int; using qul = queue; using pql = priority_queue; const int dx[] = { 1,0,-1,0 }; const int dy[] = { 0,1,0,-1 }; constexpr ll mod = 1000000007; constexpr long double pi = 3.141592653589793238462643383279; #pragma endregion // ======================================================================== //define #pragma region header #define rep(i, n) for(ll i = 0; i < n; i++) #define REP(i, n) for(ll i = 1; i <= n; i++) #define INF (ll)10000000000000000 #define mod (ll)1000000007 #pragma endregion #pragma endregion int main() { int n, z; cin >> n >> z; if (n == 1) { if (z < 2) cout << "No" << endl; else cout << "Yes" << endl; return 0; } if (n == 2) { for (int i = 1; i < 2000; i++) { for (int j = 1; j < 2000; j++) { if (i * i + j * j == z * z) { cout << "Yes" << endl; return 0; } } } cout << "No" << endl; return 0; } if (n > 2) { cout << "No" << endl; } return 0; }