n, r = map(int, input().split())
def DFS(n, r, start=1, res=[]):
if len(res) == r:
yield res[:]
return
for i in range(start, n + 1):
res.append(i)
yield from DFS(n, r, i + 1, res)
res.pop()
if __name__ == '__main__':
nums = list(DFS(n, r))
nums.sort()
for num in nums:
print(''.join('{:>3}'.format(c) for c in num))
p1706(没有用itertools的函数)
def DFS(n, visited, res=[]):
if len(res) == n:
yield res[:]
return
for i in range(1, n+1):
if not visited[i-1]:
visited[i-1] = 1
res.append(i)
yield from DFS(n, visited, res)
res.pop()
visited[i-1] = 0
if __name__ == '__main__':
n = int(input())
visited = [0] * n
nums = list(DFS(n, visited))
for num in nums:
print(''.join('{:>5}'.format(c) for c in num))