#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF ((1<<30)-1) #define rep(i,n) for(int i=0;i<(int)(n);i++) #define all(v) v.begin(),v.end() #define MOD 998244353 int main() { ios::sync_with_stdio(0); cin.tie(0); long long n; int s; cin >> n >> s; int p[20]; long long f = 1; rep(i, s)f *= i + 1; vector rem; rep(i, s) rem.push_back(i + 1); rep(i, s) { f /= s - i; int ord = n / f; p[i] = rem[ord]; rem.erase(rem.begin() + ord); n %= f; } int inv[20]; rep(i, s)inv[p[i] - 1] = i + 1; f = 1; rep(i, s)f *= i + 1; rep(i, s) rem.push_back(i + 1); long long ans = 0; rep(i, s) { f /= s - i; int ord = lower_bound(all(rem), inv[i]) - rem.begin(); ans += f * ord; rem.erase(rem.begin() + ord); } cout << ans << endl; return 0; }