static int runTestCase(int casenum) {
		switch (casenum) {
		case 0: {
			int[] A = { 1, 3, 5 };
			int expected__ = 1;

			return verifyCase(casenum, expected__, new ANDEquation().restoreY(A));
		}
		case 1: {
			int[] A = { 31, 7 };
			int expected__ = -1;

			return verifyCase(casenum, expected__, new ANDEquation().restoreY(A));
		}
		case 2: {
			int[] A = { 31, 7, 7 };
			int expected__ = 7;

			return verifyCase(casenum, expected__, new ANDEquation().restoreY(A));
		}
		case 3: {
			int[] A = { 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0,
					0, 1 };
			int expected__ = 0;

			return verifyCase(casenum, expected__, new ANDEquation().restoreY(A));
		}
		case 4: {
			int[] A = { 191411, 256951, 191411, 191411, 191411, 256951, 195507, 191411, 192435, 191411, 191411, 195511,
					191419, 191411, 256947, 191415, 191475, 195579, 191415, 191411, 191483, 191411, 191419, 191475,
					256947, 191411, 191411, 191411, 191419, 256947, 191411, 191411, 191411 };
			int expected__ = 191411;

			return verifyCase(casenum, expected__, new ANDEquation().restoreY(A));
		}
		case 5: {
			int[] A = { 1362, 1066, 1659, 2010, 1912, 1720, 1851, 1593, 1799, 1805, 1139, 1493, 1141, 1163, 1211 };
			int expected__ = -1;

			return verifyCase(casenum, expected__, new ANDEquation().restoreY(A));
		}
		case 6: {
			int[] A = { 2, 3, 7, 19 };
			int expected__ = -1;

			return verifyCase(casenum, expected__, new ANDEquation().restoreY(A));
		}

		// custom cases

		/*
		 * case 7: {
		 * int[] A = ;
		 * int expected__ = ;
		 *
		 * return verifyCase(casenum, expected__, new
		 * ANDEquation().restoreY(A));
		 * }
		 */
		/*
		 * case 8: {
		 * int[] A = ;
		 * int expected__ = ;
		 *
		 * return verifyCase(casenum, expected__, new
		 * ANDEquation().restoreY(A));
		 * }
		 */
		/*
		 * case 9: {
		 * int[] A = ;
		 * int expected__ = ;
		 *
		 * return verifyCase(casenum, expected__, new
		 * ANDEquation().restoreY(A));
		 * }
		 */
		default:
			return -1;
		}
	}