int run_test_case( int casenum ) {
		switch( casenum ) {
		case 0: {
			string grid[]             = {".o",  "o."};
			int expected__            = 1;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}
		case 1: {
			string grid[]             = {".o...",  "..o..",  "....o"};
			int expected__            = 3;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}
		case 2: {
			string grid[]             = {"o..........",  "..o........",  ".......o...",  "...........",  "...........",  "...........",  "........o..",  "..........."};
			int expected__            = 16;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}
		case 3: {
			string grid[]             = {".........",  "....o....",  "........."};
			int expected__            = 0;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}
		case 4: {
			string grid[]             = {"...o..........................",  "............................o.",  ".o............................",  "............o.................",  ".................o............",  "......................o.......",  "......o.......................",  "....o.........................",  "...............o..............",  ".......................o......",  "...........................o..",  ".......o......................"};
			int expected__            = 99;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}

		// custom cases

/*      case 5: {
			string grid[]             = ;
			int expected__            = ;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}*/
/*      case 6: {
			string grid[]             = ;
			int expected__            = ;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}*/
/*      case 7: {
			string grid[]             = ;
			int expected__            = ;

			clock_t start__           = clock();
			int received__            = DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof grid[0] ) ) );
			return verify_case( casenum, expected__, received__, clock()-start__ );
		}*/
		default:
			return -1;
		}
	}
   int run_test_case( int casenum__ ) {
      long long starttime__ = get_time();
      switch( casenum__ ) {
      case 0: {
         string grid[]             = {".o",  "o."};
         int expected__            = 1;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }
      case 1: {
         string grid[]             = {".o...",  "..o..",  "....o"};
         int expected__            = 3;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }
      case 2: {
         string grid[]             = {"o..........",  "..o........",  ".......o...",  "...........",  "...........",  "...........",  "........o..",  "..........."};
         int expected__            = 16;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }
      case 3: {
         string grid[]             = {".........",  "....o....",  "........."};
         int expected__            = 0;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }
      case 4: {
         string grid[]             = {"...o..........................",  "............................o.",  ".o............................",  "............o.................",  ".................o............",  "......................o.......",  "......o.......................",  "....o.........................",  "...............o..............",  ".......................o......",  "...........................o..",  ".......o......................"};
         int expected__            = 99;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }

      // custom cases

/*
      case 5: {
         string grid[]             = ;
         int expected__            = ;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }
*/
/*
      case 6: {
         string grid[]             = ;
         int expected__            = ;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }
*/
/*
      case 7: {
         string grid[]             = ;
         int expected__            = ;

         return verify_case( casenum__, starttime__, expected__, DucksAlignment().minimumTime( vector <string>( grid, grid + ( sizeof grid / sizeof(string) ) ) ) );
      }
*/
      default:
         return -1;
      }
   }