/**
 * 
 */
package pandit.codejam;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Scanner;

/**
 * @author Manu Ram Pandit
 * 
 */
public class DancingWithGooglersUpload {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		FileInputStream fStream = new FileInputStream(
				"input.txt");

		Scanner scanner = new Scanner(new BufferedInputStream(fStream));
		Writer out = new OutputStreamWriter(new FileOutputStream("output.txt"));

		int T = scanner.nextInt();
		int N,S,P,ti;
		int counter = 0;
		for (int count = 1; count <= T; count++) {
			N=scanner.nextInt();
			S = scanner.nextInt();
			counter = 0;
			P = scanner.nextInt();
			for(int i=1;i<=N;i++){
				ti=scanner.nextInt();
				if(ti>=(3*P-2)){
					counter++;
					continue;
				}
				else if(S>0){
					if(P>=2 && ((ti==(3*P-3)) ||(ti==(3*P-4)))) {
					S--;
					counter++;
					continue;
					}
				}
				
			}
			// System.out.println("Case #" + count + ": " + counter);
			out.write("Case #" + count + ": " + counter + "\n");
		}
		fStream.close();
		out.close();

	}

}

package ru.sidorkevich.google.jam.qualification.b;

import java.util.HashSet;
import java.util.Set;

public class Triplet {

    public static int MAX_DISTANCE = 2;

    private int score1;
    private int score2;
    private int score3;

    public Triplet(int score1, int score2, int score3) {
        this.score1 = score1;
        this.score2 = score2;
        this.score3 = score3;
    }

    public int getScore1() {
        return score1;
    }

    public int getScore2() {
        return score2;
    }

    public int getScore3() {
        return score3;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Triplet triplet = (Triplet) o;

        Set<Integer> set1 = new HashSet<Integer>();
        set1.add(score1);
        set1.add(score2);
        set1.add(score3);

        Set<Integer> set2 = new HashSet<Integer>();
        set2.add(triplet.score1);
        set2.add(triplet.score2);
        set2.add(triplet.score3);

        return set1.equals(set2);
    }

    @Override
    public int hashCode() {
        int result = score1;
        result = 31 * result + score2;
        result = 31 * result + score3;
        return result;
    }

    @Override
    public String toString() {
        return score1 + " " + score2 + " " + score3;
    }

    public boolean isSurprising() {
        return Math.abs(score1 - score2) == MAX_DISTANCE || Math.abs(score1 - score3) == MAX_DISTANCE ||
                Math.abs(score2 - score3) == MAX_DISTANCE;
    }

    public int bestScore() {
        return Math.max(Math.max(score1, score2), score3);
    }
}
