class Solution {
public List> combinationSum(int[] candidates, int target) {
List> result = new ArrayList<>();
Arrays.sort(candidates);
backtrack(candidates, result, new ArrayList(), target, 0);
return result;
}
public void backtrack(int [] candidates, List> result, List temp, int stepDiff, int start)
{
if(stepDiff < 0) return;
else if(stepDiff == 0) result.add(new ArrayList(temp));
else
{
for(int i=start; i