#include #define be(v) (v).begin(),(v).end() #define pb(q) push_back(q) #define rep(i, n) for(int i=0;i> n >> s; ll p[21]; p[0] = 1; for(ll i=1;i<=20;i++) p[i] = p[i-1] * i; set se; for(ll i=1;i<=s;i++) se.insert(i); vector v, a, b; for(int i=s-1;i>=0;i--){ v.clear(); for(auto j : se) v.pb(j); ll size = v.size(); for(ll j=1;j<=size;j++){ if(j * p[i] > n){ n -= (j - 1) * p[i]; a.pb(v[j - 1]); se.erase(v[j - 1]); break; } } } for(ll i=1;i<=s;i++){ rep(j, s){ if(a[j] == i){ b.pb(j + 1); } } } ll ans = 0; se.clear(); for(ll i=1;i<=s;i++) se.insert(i); rep(i, s){ v.clear(); for(auto j : se) v.pb(j); ll size = v.size(); for(ll j=0;j