# Combination Sum
https://leetcode.com/problems/combination-sum/
An example of [[backtracking]].
```python
results = []
def backtrack(remain, comb, start):
nonlocal results
if remain == 0:
# accept the comb
results.append(list(comb))
return
elif remain < 0:
# reject the comb
return
# continue exploration
for i in range(start, len(candidates)):
comb.append(candidates[i])
backtrack(remain - candidates[i], comb, i)
comb.pop()
backtrack(target, [], 0)
return results
```