#include<bits/stdc++.h> using namespace std; using ll = long long; using Graph = vector<vector<int>>; #define ALL(x) (x).begin(), (x).end() #define REP(i ,n) for(int i = 0; i < (int)(n); i++) #define pb push_back #define mp make_pair typedef vector<int>vint; typedef vector<ll>vll; template<typename T> istream &operator>>(istream &is, vector<T> &vec){ for (auto &v : vec) is >> v; return is; } template<typename A,typename B>inline bool chmin(A &a,const B &b){if(a>b){a=b;return true;}else{return false;}} template<typename A,typename B>inline bool chmax(A &a,const B &b){if(a<b){a=b;return true;}else{return false;}} int main() { ll n,z; cin >> n >> z; bool flag = false; for(ll x=1; x<z; x++){ for(ll y=1; y<z; y++){ if(pow(x,n)+pow(y,n) == pow(z,n)){ flag = true; break; } } if(flag){ break; } } if(flag){ cout << "Yes" << endl; }else{ cout << "No" << endl; } }