public class Solution {
public ArrayList<ArrayList<Integer>> combine(int n, int k) {
return combine(1,n+1,k);
}
public ArrayList<ArrayList<Integer>> combine(int low,int upper, int k) {
ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>> ();
if(k==1) {
for(int i=low;i<upper;i++){
ArrayList<Integer>r=new ArrayList<Integer>();
r.add(i);
result.add(r);
}
return result;
}
for(int i=low;i<upper;i++){
ArrayList<ArrayList<Integer>>r=combine(i+1,upper,k-1);
for(ArrayList<Integer> a:r){
a.add(0,i);
}
result.addAll(r);
}
return result;
}
}