public boolean pass(int[] bowl, int bowlId, int round,
                        boolean canPick,
                        boolean musTake) {
    	counter++;
    	if(counter==1){
    		for(int i=0;i<12;i++){
        		bowSize+=bowl[i];
        	}
    		//update(bowSize*6);
    	}
    	update(bowl,bowlId,round);
    	
    	if (musTake){
			return true;
		}
    	if(canPick==false)
    		return false;
    	
    	//no enough information
    	if (info.size()<=1) {
			return false;
		}
    
    	if (round==0) {
    		futureBowls=nplayer-position-counter;
            //return round0(bowl,bowlId,round,canPick,musTake);
        } else {
        	futureBowls=nplayer-counter+1;
            //return round1(bowl,bowlId,round,canPick,musTake);
        }
    	double b=score(bowl);
    	
    	double PrB=1, p=probLessThan(b);
    	for (int i = 0; i < futureBowls; i++) {			PrB*=p;		}
    	double PrA=1-PrB;
    	double ExA=exptGreaterThan(b);
    	double ExB=exptLessThan(b);
    	double Ex2=PrA*ExA+PrB*ExB;
    	
    	double tStar=search();
    	double fTStar=f(tStar);	
    	//double fb=f(b,futureBowls);
    	//double fb1=f(b+1, futureBowls);
    	if(fTStar>b) { //
    		return false;
    	}
    	else {
			return true;
		}
    }