N, S = map(int, input().split()) factorial = [1] for i in range(1, S + 1): factorial.append(factorial[-1] * i) def f(x): """x番目の順列が何か求める。O(S^2)""" cur = x numbers = list(range(1, S + 1)) res = [] for i in range(1, S + 1): d, cur = divmod(cur, factorial[S - i]) res.append(numbers[d]) numbers.pop(d) return res perm = f(N) inv_perm = [0] * S for i, x in enumerate(perm, 1): inv_perm[x - 1] = i # bisect l, r = -1, factorial[S] while r - l > 1: m = (r + l) // 2 if f(m) < inv_perm: l = m else: r = m print(r)