import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.StringTokenizer;


public class DancingWithTheGooglers {
	public static void main(String[] args) throws IOException {
		BufferedReader f = new BufferedReader (new FileReader("B-small.in"));
		PrintWriter out = new PrintWriter(new FileWriter("B-small.out"));
		
		int t = Integer.parseInt(f.readLine());
		for (int i = 0; i < t; i++){
			int c = 0;
			StringTokenizer st = new StringTokenizer(f.readLine());
			int n = Integer.parseInt(st.nextToken());
			int[] ti = new int[n];
			int s = Integer.parseInt(st.nextToken());
			int p = Integer.parseInt(st.nextToken());
			for (int j = 0; j < n; j ++){
				ti[j] = Integer.parseInt(st.nextToken());
				if (ti[j] % 3 == 0){
					if (ti[j] / 3 >= p)
						c++;
					else if (ti[j] / 3 == (p-1) && s > 0 && ti[j] >= 2){
						s--;
						c++;
					}
				}
				else if (ti[j] % 3 == 1){
					if ((ti[j] / 3) + 1 >= p)
						c++;					
				}
				else{
					if (ti[j] / 3 >= p-1)
						c++;
					else if (ti[j] / 3 == (p-2) && s > 0){
						s--;
						c++;
					}
				}
					
				
			}
			out.println("Case #" + (i+1) + ": " + c);
			
			
		}
		out.close();
		System.exit(0);
		
		
		
	}
}

package de.johanneslauber.codejam;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import de.johanneslauber.codejam.model.ICase;
import de.johanneslauber.codejam.model.IProblem;

/**
 * provids the cases for a problem
 * 
 * @author Johannes Lauber - joh.lauber@googlemail.com
 * 
 */
public class CaseProvider {

	private int numberOfCases;
	private List<ICase> listOfCases;

	/**
	 * Read the file line by line and write it to a list of cases
	 * 
	 * @author Johannes Lauber - joh.lauber@googlemail.com
	 * @param fileName
	 * @throws IOException
	 * @throws IllegalAccessException
	 * @throws InstantiationException
	 */
	public void importFile(String fileName, Class caseClass)
			throws IOException, InstantiationException, IllegalAccessException {

		BufferedReader reader = new BufferedReader(new InputStreamReader(
				new DataInputStream(new FileInputStream(fileName))));

		// Read File Line By Line
		String stringLine = reader.readLine();
		setNumberOfCases(Integer.valueOf(stringLine));

		List<ICase> listOfCases = new ArrayList<ICase>();
		ICase currentCase = createEmptyCase(caseClass);

		int i = 1;
		while ((stringLine = reader.readLine()) != null) {

			if (i <= currentCase.getNumberOfAttributes()) {
				currentCase.setLine(i, stringLine);
				i++;
			} else {
				listOfCases.add(currentCase);
				currentCase = createEmptyCase(caseClass);
				i = 1;
				currentCase.setLine(i, stringLine);
				i++;
			}
		}
		// don't forget to add the last case
		listOfCases.add(currentCase);

		reader.close();

		this.listOfCases = listOfCases;
	}

	/**
	 * 
	 * @author Johannes Lauber - joh.lauber@googlemail.com
	 * @param caseClass
	 * @throws IllegalAccessException
	 * @throws InstantiationException
	 */
	private ICase createEmptyCase(Class<ICase> caseClass)
			throws InstantiationException, IllegalAccessException {
		ICase currentCase = caseClass.newInstance();
		return currentCase;
	}

	/**
	 * 
	 * @author Johannes Lauber - joh.lauber@googlemail.com
	 * @param forName
	 */
	public void solveCases(Class<?> forName) {

		try {
			IProblem problem = (IProblem) forName.newInstance();
			problem.setListOfCases(listOfCases);
			problem.solveCases();
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

	// Setter & Getter
	public int getNumberOfCases() {
		return numberOfCases;
	}

	public void setNumberOfCases(int numberOfCases) {
		this.numberOfCases = numberOfCases;
	}

	public List<ICase> getListOfCases() {
		return listOfCases;
	}

	public void setListOfCases(List<ICase> listOfCases) {
		this.listOfCases = listOfCases;
	}

}
