#include <iostream>
#include <vector>
using namespace std;
int repow(int x, int y){
    if(y == 0) return 1;
    int res = 1;
    while(y != 0){
        if(y & 1) res = res*x;
        x = x * x;
        y >>= 1;
    }
    return res;
}
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n, z;
    cin >> n >> z;
    int ans = 0;
    if(n == 1){
        if(z > 1) cout << "Yes" << endl;
        else cout << "No" << endl;
        return 0;
    }
    int zn = repow(z, n);
    for(int i = 1; i < z; i++){
        for(int j = 1; j < z; j++){
            int x = repow(i, n), y = repow(j, n);
            if(x + y == zn) ans++;
        }
    }
    if(ans != 0){
        cout << "Yes" << endl;
        return 0;
    }
    cout << "No" << endl;
}