public static ArrayList<ArrayList<Integer>> Sum(int sum){
ArrayList<ArrayList<Integer>> res=new ArrayList<ArrayList<Integer>>();
ArrayList<Integer> list=new ArrayList<Integer>();
int min=0;
int max=0;
int resSum=0;
while(min<=(sum/2+1)){
if(resSum==sum){
for(int j=min;j<=max;j++){
list.add(j);
}
res.add(list);
list=new ArrayList<>();
resSum=resSum-min;
min++;
max++;
resSum=resSum+max;
}else if(resSum<sum){
max++;
resSum=resSum+max;
}else{
resSum=resSum-min;
min++;
}
}
return res;
}