#include <bits/stdc++.h>
using namespace std;
#define int long long
int a[100], b[100];
pair<int,int> range(int l, int r, int B) {
int cc = 0;
int mi = 0;
int ma = 0;
while (r) {
a[cc]=l%B;
mi += l%B;
ma += r%B;
b[cc++]=r%B;
l/=B, r/=B;
}
int ret = 0;
cc--;
while (cc >= 0) {
if (a[cc] == b[cc]) {
ret += a[cc];
} else {
return {min(mi, ret + a[cc]+1), max(ma, ret + b[cc] - 1 + cc * (B - 1))};
}
cc--;
}
return {ret, ret};
}
int32_t main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
int B, N;
cin >> B >> N;
auto solve = [&](int l, int r, auto &&solve)->int{
bool valid = true;
for (int i = 2; i <= B; i++) {
__int128 x = i, y = 1;
while (x <= l) {
x *= i;
y++;
}
if (x <= r) continue;
auto sum = range(l, r, i);
if (((i-1)*y)%2) valid = false;
else {
int req = (i-1)*y/2;
if (req > sum.second || req < sum.first) valid = false;
}
}
if (!valid) return -1;
if (l == r) return l;
int m = l + r >> 1;
int c1 = solve(l, m, solve);
if (c1 != -1) return c1;
return solve(m + 1, r, solve);
};
cout << solve(N, 1000000000000000000, solve) << '\n';
}