# Title: Subsets
# Heading: Python Program to Find All Subsets of a Set
# Level: intermediate
# Tags: subsets, power set, backtracking, recursion
# Time: O(n × 2ⁿ)
# Space: O(n)
# About: Lists every subset of a list's items (the power set) by deciding for each item in turn whether to include it or skip it.

def subsets(items):
    """Every subset of items, as a list of lists."""
    result = []
    current = []

    def backtrack(index):
        if index == len(items):
            result.append(current.copy())
            return
        current.append(items[index])  # include this item
        backtrack(index + 1)
        current.pop()                 # undo, then skip it
        backtrack(index + 1)

    backtrack(0)
    return result


for subset in subsets([1, 2, 3]):
    print(subset)
