public static ArrayList<String> selectRecursion(char[] arr, int start, int num, Stack<Character> stack, ArrayList<String> arrayList, boolean print) {
		if(start == arr.length) {
			return arrayList;
		}
		
		if(arrayList == null) {
			arrayList = new ArrayList<String>();
		}
		for(int i=start;i<arr.length;i++) {
			stack.add(arr[i]);
			if(stack.size() == num) {
				resultCount++;
				Object[] list = stack.toArray();
				if(print)
					System.out.print(resultCount + ": ");
				StringBuilder builder = new StringBuilder();
				for(Object ch : list) {
					if(print)
						System.out.print(ch.toString());
					builder.append(ch.toString());
				}
				arrayList.add(builder.toString());
				if(print)
					System.out.println();
			} else {
				selectRecursion(arr, i+1, num, stack, arrayList, print);
			}
			stack.pop();
		}
		return arrayList;
	}