import java.util.*;


public class Solution {

    public ArrayList<ArrayList<Integer>> subsets (int[] S) {
        // write code here
        ArrayList<ArrayList<Integer>> ret = new ArrayList<>();
        ArrayList<Integer> a = new ArrayList<>();
        ret.add(a);

        for (int i = 0; i < S.length; i++) {
            int size = ret.size();
            for (int j = 0; j < size;j++) {
                ArrayList<Integer> tmp = new ArrayList<>();
                tmp.addAll(ret.get(j));
                tmp.add(S[i]);
                ret.add(tmp);
            }   
        }

        for (int i = 0; i < ret.size(); i++) {
            for (int j = 0; j < ret.size()-1; j++) {
                if (ret.get(j).size() > ret.get(j+1).size()) {
                    ArrayList<Integer> tmp = ret.get(j);
                    ret.set(j, ret.get(j+1));
                    ret.set(j+1, tmp);
                }
            }
        }
        return ret;
    }


    
}