public int alphabeta_min(int currentDepth, int alpha, int beta) {
		if (!cont)
			return 0;
	    if (currentDepth >= depth || board.legalMoves.isEmpty()) {
	    	if (currentDepth==0 && board.winStatus != 2) {
	    		return Integer.MAX_VALUE;
	    	}
	    	int eval = -1*board.eval(weights);
	    	evals++;
	    	return eval;
	    }
	    int b = infHolder.MAX + 1;
	    LinkedList<Tuple> list = (LinkedList<Tuple>) board.legalMoves.clone();
	    for (Tuple chosenMove : list) {
	        board.move(chosenMove);
	        int s = alphabeta_max(currentDepth+1, alpha, beta);
	        b = min(b, s);
	        if (b < alpha) {
		        	board.takeBack(1);
	        	return b;
	        }
	        if (b < beta) {
	        	beta = b;
	        }
	        	board.takeBack(1);
	    }
	    return b;
	}