private void recurse(ArrayList<Integer> sizes, int job) {
		/*
		 * for (int i = 0; i < job - 1; ++i) { System.out.print("  "); }
		 */
		if (job < 15) {
			for (int size : sizes) {
				ArrayList<Integer> newSizes = new ArrayList<Integer>();
				boolean found = false;
				for (int i = 0; i < sizes.size(); ++i) {
					int tmp = sizes.get(i);
					if (!found && (tmp == size)) {
						found = true;
					} else {
						newSizes.add(tmp);
					}
				}
				// System.out.println(size + " " +newSizes);
				switch (size) {
				case 2:
					newSizes.add(3);
					newSizes.add(4);
					newSizes.add(5);
					break;
				case 3:
					newSizes.add(4);
					newSizes.add(5);
					break;
				case 4:
					// Cut in half
					newSizes.add(5);
					break;
				case 5:
					// nothing to do!
					break;
				default:
					System.out.println("Error: size");
					break;
				}

				recurse(newSizes, job + 1);
			}
		} else {
			// System.out.println("Done: " + sizes);
		}

	}