#include using namespace std; //Macro Shorthands #define F first #define S second #define f(i, n) for (ll i = 0; i <= n; i++) #define rf(i, n) for (ll i = n; i >= 0; i--) #define Cf(i, a, b) for (ll i = a; i <= b; i++) #define Crf(i, b, a) for (ll i = b; i >= a; i--) #define pb push_back #define mp make_pair #define z ((ll)1e9 + 7) #define every(it, x) for (auto &it : x) #define SET(it, x) \ for (auto &it : x) \ { \ cin >> it; \ } #define ins insert #define INF ((ll)1e18) #define Test \ ll T; \ cin >> T; \ while (T--) #define all(v) v.begin(), v.end() #define nline cout << endl #define SZ(v) (ll) v.size() #define pll pair typedef long long ll; typedef vector vll; typedef vector> vvll; typedef vector vstr; typedef vector vchar; typedef vector> vpll; typedef set sll; typedef set sstr; typedef set> spll; typedef map mllll; typedef map mstrll; typedef queue qll; ll powMod(ll x, ll y) { ll p = 1; while (y) { if (y % 2) { p = (p * x) % z; } y /= 2; x = (x * x) % z; } return p; } ll CpowMod(ll x, ll y, ll w) { ll p = 1; while (y) { if (y % 2) { p = (p * x) % w; } y /= 2; x = (x * x) % w; } return p; } ll invMod(ll x) { return powMod(x, z - 2); } ll CinvMod(ll x, ll w) { return CpowMod(x, w - 2, w); } ll gcdd(ll a, ll b) { return b == 0 ? a : gcdd(b, a % b); } const ll mod = 1e9 + 7; void call() { ll a, b; cin >> a >> b; if (a == b or (b == 0 and a == 0)) { cout << "Yes" << endl; } else { if (!a or !b) { cout << "No" << endl; return; } long double f1 = log10(a) / a; long double f2 = log10(b) / b; if (f1 == f2) { cout << "Yes" << endl; } else { cout << "No" << endl; } } } int main() { int t = 1; //cin >> t; while (t--) { call(); } }