static int runTestCase(int casenum__) {
		switch (casenum__) {
		case 0: {
			int[] maxNumber = { 5 };
			int expected__ = 5;

			return verifyCase(casenum__, expected__,
					new RabbitNumbering().theCount(maxNumber));
		}
		case 1: {
			int[] maxNumber = { 4, 4, 4, 4 };
			int expected__ = 24;

			return verifyCase(casenum__, expected__,
					new RabbitNumbering().theCount(maxNumber));
		}
		case 2: {
			int[] maxNumber = { 5, 8 };
			int expected__ = 35;

			return verifyCase(casenum__, expected__,
					new RabbitNumbering().theCount(maxNumber));
		}
		case 3: {
			int[] maxNumber = { 2, 1, 2 };
			int expected__ = 0;

			return verifyCase(casenum__, expected__,
					new RabbitNumbering().theCount(maxNumber));
		}
		case 4: {
			int[] maxNumber = { 25, 489, 76, 98, 704, 98, 768, 39, 697, 8, 56,
					74, 36, 95, 87, 2, 968, 4, 920, 54, 873, 90 };
			int expected__ = 676780400;

			return verifyCase(casenum__, expected__,
					new RabbitNumbering().theCount(maxNumber));
		}

		// custom cases

		/*
		 * case 5: { int[] maxNumber = ; int expected__ = ;
		 * 
		 * return verifyCase(casenum__, expected__, new
		 * RabbitNumbering().theCount(maxNumber)); }
		 */
		/*
		 * case 6: { int[] maxNumber = ; int expected__ = ;
		 * 
		 * return verifyCase(casenum__, expected__, new
		 * RabbitNumbering().theCount(maxNumber)); }
		 */
		/*
		 * case 7: { int[] maxNumber = ; int expected__ = ;
		 * 
		 * return verifyCase(casenum__, expected__, new
		 * RabbitNumbering().theCount(maxNumber)); }
		 */
		default:
			return -1;
		}
	}