Step 1: Start with empty combination [] and target 7
[] (target=7)
Why: We begin with no numbers chosen and full target to reach
Step 2: Pick 2, combination becomes [2], reduce target to 5
[2] (target=5)
Why: Try including 2 and see if we can reach target by adding more
Step 3: Pick 2 again (allowed), combination [2,2], target 3
[2, 2] (target=3)
Why: We can reuse numbers, so try 2 again to get closer to target
Step 4: Pick 3, combination [2, 2, 3], target 0
[2, 2, 3] (target=0)
Why: Sum matches target, so this is a valid combination
Step 5: Backtrack: remove last 3, try next candidate 6 at [2, 2]
[2, 2] (target=3)
Why: 3 was last candidate, try next to find other combos
Step 6: 6 is too big for target 3, backtrack to [2]
[2] (target=5)
Why: 6 exceeds target, so discard and backtrack
Step 7: Try 3 at [2], combination [2, 3], target 2
[2, 3] (target=2)
Why: Try next candidate to reach target
Step 8: Try 3 again at [2,3], combination [2,3,3], target -1 (invalid)
[2, 3, 3] (target=-1)
Why: Target negative means invalid path, backtrack
Step 9: Backtrack to [] and try 3, combination [3], target 4
[3] (target=4)
Why: Try starting with 3 to find other combos
Step 10: Try 3 again, combination [3, 3], target 1
[3, 3] (target=1)
Why: Try adding 3 again to get closer
Step 11: Try 6 at [3,3], too big for target 1, backtrack
[3, 3] (target=1)
Why: 6 exceeds target, discard
Step 12: Try 7 at [3,3], too big, backtrack to []
[] (target=7)
Why: Try next candidates from start
Step 13: Try 6, combination [6], target 1
[6] (target=1)
Why: Try 6 to see if we can reach target
Step 14: Try 7, combination [7], target 0 (valid)
[7] (target=0)
Why: 7 alone matches target, valid combination