public static Set<Set<Integer>> allSubSet ( Set<Integer> s ) {
		
		Set<Set<Integer>>   pre  =  new HashSet<>();
		
		for ( Integer e : s ) {			
//			System.out.println( pre );
			// iterate through each set in pre
			// 1. add the new incoming element to each set in the set of set
			// 2. add the new incoming element as an individual set into
			// the pre set;
			Set<Set<Integer>>	dup  =  new HashSet<>();
			for ( Set<Integer> ss : pre ) {
				dup.add(new HashSet<Integer>(ss));
				ss.add(e);
			}
			pre.addAll(dup);
			pre.add(new HashSet<Integer>(Arrays.asList(e)));
		}		
		return pre;
	}