public ArrayList<ArrayList<Integer>> subsets(int[] S) {
		result = new ArrayList<ArrayList<Integer>>();
		ArrayList<Integer> temp = new ArrayList<Integer>();
		result.add(new ArrayList<Integer>(temp));
		if (S.length == 0)
			return result;
		Arrays.sort(S);
		getSubset(temp, S, 0);
		return result;
	}