# vypsat všechny rostoucí posloupnosti tvořené čísly z množiny {1, 2, ..., N}

def generate_subsets(items, mask=[]):
    if len(mask) == len(items):
        yield [item for i, item in enumerate(items) if mask[i]]
    else:
        yield from generate_subsets(items, mask + [False])
        # for x in generate_subsets(items, mask + [False]):
        #     yield x
        yield from generate_subsets(items, mask + [True])


for s in generate_subsets([1, 2, 3]):
    print(s)

print(len(list(generate_subsets([1, 2, 3]))))
