#include int have[1000005]; int main(){ int n; long long z; scanf("%d%lld",&n,&z); long long need = 1; for(int i = 1; i <= n; i++) need *= z; for(int i = 1; i < z; i++){ long long offer = 1; int ok = 1; for(int j = 1; j <= n; j++){ offer *= (long long)i; if(offer>need){ ok = 0; break; } } if(!ok) break; else have[offer] = 1; } int find = 0; for(int i = 1; i < need; i++){ if(have[i] && have[need-i]) find = 1; } if(find) printf("Yes\n"); else printf("No\n"); return 0; }