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