n, m = map(int, input().split())
def fun(n, m, li):
if len(li) == m:
for i in range(m - 1):
print(str(li[i]) + ' ', end='')
print(str(li[m - 1]))
return
k = 1 if len(li) == 0 else li[len(li) - 1] + 1
for i in range(k, n - m + len(li) + 2):
lis = li + [i]
fun(n, m, lis)
return
fun(n, m, [])
li 存放最后输出的字符串
在 li 长度小于 m 时,li 的最后一位加 1 是下一次循环的开头
每次递归计算当前数字出现的范围,在该范围内循环并往下递归
每次循环的最后一位是 n - m + len(li) + 1
因为 range 左闭右开所以需要再加 1
在 li 长度等于 m 时输出 li