Sum it up solution bug

My code is printing duplicate code ,could you please have a look and let me know what am i missing here.Please find below my code

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class SumItUp {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(bufferedReader.readLine());
StringTokenizer tokenizer = new StringTokenizer(bufferedReader.readLine());
int[] input = new int[n];
for (int i = 0; i < input.length; i++) {
input[i] = Integer.parseInt(tokenizer.nextToken());
}
int target = Integer.parseInt(bufferedReader.readLine());
printSumCombination(input, target);
}

private static void printSumCombination(int[] input, int target) {
    List<Integer> sumNumber = new ArrayList<>();
    printSumCombinationHelper(input, target, sumNumber, 0);
}

private static boolean printSumCombinationHelper(int[] input, int target, List<Integer> sumNumber, int i) {
    if (target == 0 && i <= input.length) {
        printList(sumNumber);
        input[i] = 0;
        return false;
    }
    for (int j = 0; j < input.length; j++) {
        int temp = input[j];
        if (temp <= target && target - temp >= 0 && temp != 0) {
            sumNumber.add(temp);
            target = target - temp;
            input[j] = 0;
            boolean sumFound = printSumCombinationHelper(input, target, sumNumber, i + 1);
            if (sumFound) {
                return true;
            }
            target = target + temp;
            input[j] = temp;
            sumNumber.remove(Integer.valueOf(temp));

        }
    }
    return false;
}

private static void printList(List<Integer> sumNumber) {
    Collections.sort(sumNumber);
    sumNumber.forEach(e -> System.out.print(e + " "));
    System.out.println();
}

}

provide code using ide link…

boolean sumFound = printSumCombinationHelper(input, target, sumNumber, i+ 1);

change i+1 to j+1;

and print all unique array list. In c++ we can just store elements on vector and store all vector in the set so only unique vector will be there in set … use alternative of set in java.