def get_pairs(n, pool=None):
    if pool is None:
        pool = set(range(1, n + 1))
    if not pool:
        yield []
    for i in pool:
        for i2 in pool.intersection(range(i * 2, n + 1)):
            for pairs in get_pairs(n, pool - {i, i2}):
                yield [(i, i2)] + pairs

print(*get_pairs(6), sep='\n')