private CohoSolverResult rightEnd(double alpha, double delta,
			LPBasis leftB, CohoSolverResult result, CohoSolver solver,
			Matrix A_C,Matrix x, Matrix y, int beginTime, int minTimes,int maxTimes){
			LPBasis rightB = result.optBasis();
			double stepTurn = Math.max(delta+planeEps*planeEps*Math.max(1,alpha),planeEps*Math.max(1,alpha));
			for(int times = beginTime; (times-beginTime<minTimes)||rightB.equals(leftB)||similarBasis(A_C.row(leftB.basis()),A_C.row(rightB.basis()));times++){
				//if times+1>3=31, overflow
				double tmp = times<30?(1<<(times+1)):Math.pow(2.0,times+1);
				double increase = stepTurn * (tmp-1);
				double dir = alpha + increase;
				if(dir>maxInc){//For backtrack, not too large, infinity problems
					dir = maxInc;
				}
				Matrix direction = (x.add(y.mult(dir)));
				result = solver.opt(direction);
				rightB = result.optBasis();
				if(((maxTimes>0)&&(times-beginTime>=maxTimes))||(dir>=maxInc)){//This is used to ensure not to fall into a loop forever. But it should never used.
					//if(DEBUG.debug) DEBUG.println(LPproject_DEBUG,"Too many times tried, return the best result till now, which might be the same with the leftB. Cause to jump to next quad.");
					break;
				}
			}			
			return result;
	}