#include #define rep(i,n) for(int i=0;i<(int)(n);i++) #define chmin(x,y) x = min((x),(y)); #define chmax(x,y) x = max((x),(y)); using namespace std; using ll = long long ; using P = pair ; using pll = pair; const int INF = 1e9; const long long LINF = 1e17; const int MOD = 1000000007; //const int MOD = 998244353; const double PI = 3.14159265358979323846; ll p[22]; int main(){ p[0] = 1; for(int i=1;i<=20;i++) p[i] = p[i-1] * i; ll n,s; cin >> n >> s; vector a(s); vector seen(s,0); rep(i,s){ int c = n / p[s-i-1]; rep(j,s){ if(c==0 && seen[j]==0){ a[i] = j; seen[j] = 1; break; } if(seen[j]==0) --c; } n %= p[s-i-1]; } vector b(s,0); rep(i,s){ b[a[i]] = i; } ll ans = 0; rep(i,s){ int c = 0; rep(j,s){ if(seen[j] == 1 && j < b[i]) ++c; if(j == b[i]) seen[j] = 0; } ans += c * p[s-i-1]; } cout << ans << endl; return 0; }