Backtracking: Choose, Recurse, Undo