Challenge 1: Remove Duplicates, Keep Order — Possible Solution ==================================================================== numbers = [3, 1, 3, 2, 1, 4, 2] seen = set() result = [] for n in numbers: if n not in seen: seen.add(n) result.append(n) print(result) Output: [3, 1, 2, 4] WHY THIS WORKS AS AN ANSWER ------------------------------ A plain set(numbers) would remove duplicates correctly but lose the original order entirely, since the chapter's own set section describes sets as unordered — that's the exact trade-off the hint is pointing at. This solution uses two collections together, each for what it's best at: seen is a set used purely for its fast "n in seen" membership test (the chapter's own set section highlights this speed), while result is a list used purely to preserve insertion order, since lists (unlike sets) remember the order items were added. For each number, n not in seen checks whether it's been added before. If not, it's added to both seen (so future duplicates of it are caught) and result (so it appears exactly once, in its original first-seen position). Duplicate values later in the list — like the second 3, second 1, second 2 — are simply skipped because they're already in seen.