if (input.length == 0 || target == 0)
throw new IllegalArgumentException();
List<List<Integer>> result = new ArrayList();
for (int i = 0; i < input.length; i++) {
int rightpointer = input.length - 1 - i;
int runningProductSum = 1 * input[rightpointer];
while (runningProductSum < target) {
if (runningProductSum < target && !result.contains(Arrays.asList(input[rightpointer]))) {
result.add(Arrays.asList(input[rightpointer]));
if (rightpointer - 1 < 0) {
return result;
}
int currentValue = input[rightpointer] * input[rightpointer - 1];
if (rightpointer <= input.length - 1 && currentValue < target) {
result.add(Arrays.asList(input[rightpointer - 1], input[rightpointer]));
}
}
rightpointer--;
runningProductSum = runningProductSum * input[rightpointer];
}
}
return result;