public class Solution {
public ArrayList<ArrayList<Integer>> subsets(int[] S) {
ArrayList<Integer> list = new ArrayList<Integer>();
sub(S,0,list);
return all;
}
static ArrayList<ArrayList<Integer>> all = new ArrayList<ArrayList<Integer>>();
public void sub(int[] S,int index,ArrayList<Integer> list){
if(index==S.length){
ArrayList<Integer> res = new ArrayList<Integer>(list);
all.add(res);
return;
}
sub(S,index+1,list);
list.add(S[index]);
sub(S,index+1,list);
list.remove(list.size()-1);
}
}