public void addSum(int[] num,List<Integer> list,int target,int index){
        if(target <= 0){
            if(target == 0 && !result.contains(list))
                result.add(new ArrayList<Integer>(list));
            return;
        }
        for (int i = index;i < num.length ;i++ ) {
            if(num[i] > target)
                break;
            list.add(num[i]);
            addSum(num,list,target-num[i],i+1);
            list.remove(list.size()-1);
        }
    }