#include <bits/stdc++.h>
using namespace std;
vector<long long> vec, A, B;
void comp(int s, int e, vector<long long> &A, long long sum) {
  if (s > e) {
    A.push_back(sum);
    return;
  }
  comp(s + 1, e, A, sum);
  comp(s + 1, e, A, sum + vec[s]);
  comp(s + 1, e, A, sum - vec[s]);
}
long w, m, r;
int main() {
  scanf("%d%d", &w, &m);
  if (w == 2 or w == 3) {
    printf("YES\n");
    return 0;
  }
  int i = 0;
  vec.push_back(1);
  while (vec.back() - m < m) {
    vec.push_back(vec.back() * w);
  }
  comp(0, vec.size() / 2, A, 0);
  comp(vec.size() / 2 + 1, vec.size() - 1, B, 0);
  sort((A).begin(), (A).end());
  for (int i = 0; i < B.size(); i++) {
    int com_val = m + B[i];
    if (binary_search((A).begin(), (A).end(), -com_val)) {
      printf("YES\n");
      return 0;
    }
  }
  printf("NO\n");
  return 0;
}
