**Simply changing vec[index+1] = i; to vec.push_back(i); fixed the runtime error.**

I got runtime error: Last executed input: [1,2], 3

I double checked my code but still couldn't figure out what's wrong. Any help would be appreciated.

My solution is as below:

```
class Solution {
public:
vector<vector<int> > combinationSum(vector<int> &candidates, int target) {
vector<vector<int>> vecs;
if(candidates.empty()) {
return vecs;
}
sort(candidates.begin(), candidates.end());
vector<int> vec={0};
helper(candidates, target, 0, 0, vec, vecs);
}
void helper(vector<int> &can, int target, int sum, int index, vector<int> &vec, vector<vector<int>> &vecs) {//if no & for vec,
//Input:[1], 2, Output: [[1]], Expected:[[1,1]]
if(target == sum) {
vector<int> res;
for(int i=1; i<vec.size(); ++i) {
res.push_back(can[vec[i]]);
}
vecs.push_back(res);
} else if (target> sum) {
for(int i=vec[index]; i<can.size(); ++i) {
vec[index+1] = i;
helper(can, target, sum+can[i], index+1, vec, vecs);
}
} else if (target<sum) {//if missing this: Runtime Error,Last executed input: [2], 1
return;
}
}
};
```