def gen(arr, res, used, left):
if used == len(arr):
if not left:
print(res)
return
gen(arr, res, used + 1, left)
res.append(arr[used])
gen(arr, res, used + 1, left - 1)
res.pop()
>>> gen([(0, 1), (0, 3), (1, 2), (1, 4), (2, 3), (3, 4)], [], 0, 4)
[(1, 2), (1, 4), (2, 3), (3, 4)]
[(0, 3), (1, 4), (2, 3), (3, 4)]
[(0, 3), (1, 2), (2, 3), (3, 4)]
[(0, 3), (1, 2), (1, 4), (3, 4)]
[(0, 3), (1, 2), (1, 4), (2, 3)]
[(0, 1), (1, 4), (2, 3), (3, 4)]
[(0, 1), (1, 2), (2, 3), (3, 4)]
[(0, 1), (1, 2), (1, 4), (3, 4)]
[(0, 1), (1, 2), (1, 4), (2, 3)]
[(0, 1), (0, 3), (2, 3), (3, 4)]
[(0, 1), (0, 3), (1, 4), (3, 4)]
[(0, 1), (0, 3), (1, 4), (2, 3)]
[(0, 1), (0, 3), (1, 2), (3, 4)]
[(0, 1), (0, 3), (1, 2), (2, 3)]
[(0, 1), (0, 3), (1, 2), (1, 4)]