importjava.util.ArrayList;importjava.util.List;publicclassTest{publicstaticList<List<Integer>>decompose(int n){List<List<Integer>> result =newArrayList<>();decomposeHelper(n,1,newArrayList<>(), result);return result;}privatestaticvoiddecomposeHelper(int n,int start,List<Integer> current,List<List<Integer>> result){if(n ==0){
result.add(newArrayList<>(current));return;}for(int i = start; i <= n; i++){
current.add(i);decomposeHelper(n - i, i, current, result);
current.remove(current.size()-1);}}publicstaticvoidmain(String[] args){List<List<Integer>> result =decompose(5);for(List<Integer> list : result){System.out.println(list);}}}