function combine(n, k):
result = []
backtrack(1, [], result, n, k)
return result
function backtrack(start, current, result, n, k):
if length(current) == k:
result.append(copy of current)
return
for i from start to n:
current.append(i)
backtrack(i + 1, current, result, n, k)
current.pop() # backtrack