// "static void main" must be defined in a public class.
class Solution {
public ArrayList<ArrayList<Integer> > generateSubArrays(int array[]) {
int n = array.length;
int subArraysCount = (int)Math.pow(2.0,n)-1;
ArrayList<ArrayList<Integer> > subArrays = new ArrayList<ArrayList<Integer> >(subArraysCount);
subArrays.add(new ArrayList<Integer>());
ArrayList<Integer> temp = new ArrayList<Integer>();
for(int i=0; i<n; i++) {
for(int len=0; i+len<n; len++){
for(int idx=i; idx<=i+len; idx++)temp.add(array[idx]);
subArrays.add((ArrayList<Integer>)temp.clone());
temp.clear();
}
}
return subArrays;
}
}
public class Main {
public static void main(String[] args) {
int[] testArray = {1,2,3};
ArrayList<ArrayList<Integer> > subArrays = new Solution().generateSubArrays(testArray);
for(ArrayList<Integer> subArray: subArrays) {
System.out.print("SubArray: [ ");
for(int elem: subArray) {
System.out.print(elem + ", ");
}
System.out.println(" ]");
}
}
}