#全排列 1~n中选m个数全排列
def dfs(path,n,m):iflen(path)== m:print(path)returnfor i inrange(1,n+1):if i inpath:continue
path.append(i)dfs(path,n,m)
path.pop()
n,m =map(int,input().split())dfs([],n,m)
#递归组合 1~n中选m个数 组合
n,m =map(int,input().split())
def dfs(start,path,n,m):iflen(path)== m:for item inpath:print(item, end=" ")print()returnfor i inrange(start,n+1):if i inpath:continue
path.append(i)dfs(i+1,path,n,m)
path.pop()dfs(1,[],n,m)
#非递归组合
n,m =map(int,input().split())
li =[]for i inrange(1,n+1):
li.append(i)
j = i +1whileli:iflen(li)== m:print(li)
li.pop()
elif j not in li and j <= n:
li.append(j)
j +=1continue
elif j > n:
j = li[-1]+1
li.pop()