public class WinningMode extends Strategy {

    /* ----- constructor ----- */

    public WinningMode() { }

    

    /* ----- initialization ----- */

    public void priv_init() { }



    /* ----- strategy ----- */

    public int initial_turn() { return 1; }

    public int turn(int[] lastTurn, int[] scores,
		    int carryOver, int turnNumber)
    {
	int maxbet = 0;
	for (int ix = 0; ix < lastTurn.length; ix += 1) {
	    int bet = lastTurn[ix];
	    if (maxbet < bet) maxbet = bet;
	}

	int[] histogram = new int[maxbet+1];
	for (int ix = 0; ix < lastTurn.length; ix += 1) {
	    histogram[lastTurn[ix]] += 1;
	}

	int mode1 = 0;
	int mode2 = 0;
	int quan1 = 0;
	int quan2 = 0;
	for (int ix = 1; ix <= maxbet; ix += 1) {
	    int quan = histogram[ix];
	    if (quan > quan1) {
		quan2 = quan1;
		mode2 = mode1;
		quan1 = quan;
		mode1 = ix;
	    } else if (quan > quan2) {
		quan2 = quan;
		mode2 = ix;
	    }
	}

	if (carryOver >= mode1) return mode1+1;
	if (carryOver >= mode2) return mode2+1;
	return 1;
    }

}
