Step 1: Start with empty combination [] and target 7
[] (sum=0, target=7)
Why: We begin with no numbers chosen and full target to reach
Step 2: Pick 2, combination becomes [2], target reduces to 5
[2] (sum=2, target=5)
Why: Try including 2 to reach target
Step 3: Pick 2 again, combination [2, 2], target 3
[2 -> 2] (sum=4, target=3)
Why: We can reuse numbers, try 2 again
Step 4: Pick 3, combination [2, 2, 3], target 0 (found valid)
[2 -> 2 -> 3] (sum=7, target=0)
Why: Sum matches target, save this combination
Step 5: Backtrack: remove last 3, try next candidate 6 at [2, 2]
[2 -> 2] (sum=4, target=3)
Why: Try other options after backtracking
Step 6: Pick 6, sum 10 > target 7, backtrack
[2 -> 2] (sum=4, target=3)
Why: Sum exceeded target, discard this path
Step 7: Backtrack to [2], try next candidate 3
[2] (sum=2, target=5)
Why: Try other candidates after backtracking
Step 8: Pick 3, combination [2, 3], target 2
[2 -> 3] (sum=5, target=2)
Why: Try adding 3 to combination
Step 9: Pick 3 again, sum 8 > target 7, backtrack
[2 -> 3] (sum=5, target=2)
Why: Sum exceeded target, discard path
Step 10: Backtrack to [], try candidate 3
[] (sum=0, target=7)
Step 11: Pick 3, combination [3], target 4
[3] (sum=3, target=4)
Step 12: Pick 3 again, combination [3, 3], target 1
[3 -> 3] (sum=6, target=1)
Step 13: Pick 3 again, sum 9 > target 7, backtrack
[3 -> 3] (sum=6, target=1)
Why: Sum exceeded target, discard path
Step 14: Backtrack to [], try candidate 6
[] (sum=0, target=7)
Step 15: Pick 6, combination [6], target 1
[6] (sum=6, target=1)
Step 16: Pick 6 again, sum 12 > target 7, backtrack
[6] (sum=6, target=1)
Why: Sum exceeded target, discard path
Step 17: Backtrack to [], try candidate 7
[] (sum=0, target=7)
Step 18: Pick 7, combination [7], target 0 (found valid)
[7] (sum=7, target=0)
Why: Sum matches target, save this combination