static int runTestCase(int casenum__) {
		switch (casenum__) {
		case 0: {
			int[] duration = { 3, 5, 4, 11 };
			int[] tone = { 2, 1, 3, 1 };
			int T = 17;
			int expected__ = 3;

			return verifyCase(casenum__, expected__,
					new GUMIAndSongsDiv2().maxSongs(duration, tone, T));
		}
		case 1: {
			int[] duration = { 100, 200, 300 };
			int[] tone = { 1, 2, 3 };
			int T = 10;
			int expected__ = 0;

			return verifyCase(casenum__, expected__,
					new GUMIAndSongsDiv2().maxSongs(duration, tone, T));
		}
		case 2: {
			int[] duration = { 1, 2, 3, 4 };
			int[] tone = { 1, 1, 1, 1 };
			int T = 100;
			int expected__ = 4;

			return verifyCase(casenum__, expected__,
					new GUMIAndSongsDiv2().maxSongs(duration, tone, T));
		}
		case 3: {
			int[] duration = { 10, 10, 10 };
			int[] tone = { 58, 58, 58 };
			int T = 30;
			int expected__ = 3;

			return verifyCase(casenum__, expected__,
					new GUMIAndSongsDiv2().maxSongs(duration, tone, T));
		}
		case 4: {
			int[] duration = { 8, 11, 7, 15, 9, 16, 7, 9 };
			int[] tone = { 3, 8, 5, 4, 2, 7, 4, 1 };
			int T = 14;
			int expected__ = 1;

			return verifyCase(casenum__, expected__,
					new GUMIAndSongsDiv2().maxSongs(duration, tone, T));
		}
		case 5: {
			int[] duration = { 5611, 39996, 20200, 56574, 81643, 90131, 33486,
					99568, 48112, 97168, 5600, 49145, 73590, 3979, 94614 };
			int[] tone = { 2916, 53353, 64924, 86481, 44803, 61254, 99393,
					5993, 40781, 2174, 67458, 74263, 69710, 40044, 80853 };
			int T = 302606;
			int expected__ = 8;

			return verifyCase(casenum__, expected__,
					new GUMIAndSongsDiv2().maxSongs(duration, tone, T));
		}

		// custom cases

		/*
		 * case 6: { int[] duration = ; int[] tone = ; int T = ; int expected__
		 * = ;
		 * 
		 * return verifyCase(casenum__, expected__, new
		 * GUMIAndSongsDiv2().maxSongs(duration, tone, T)); }
		 */
		/*
		 * case 7: { int[] duration = ; int[] tone = ; int T = ; int expected__
		 * = ;
		 * 
		 * return verifyCase(casenum__, expected__, new
		 * GUMIAndSongsDiv2().maxSongs(duration, tone, T)); }
		 */
		/*
		 * case 8: { int[] duration = ; int[] tone = ; int T = ; int expected__
		 * = ;
		 * 
		 * return verifyCase(casenum__, expected__, new
		 * GUMIAndSongsDiv2().maxSongs(duration, tone, T)); }
		 */
		default:
			return -1;
		}
	}