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);
		
		
		
	}
}

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;


public class DancingGooglers {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		BufferedReader inFile = null;
		try {
			inFile = new BufferedReader(
				    new InputStreamReader(
				        new BufferedInputStream(new FileInputStream("B-small-attempt0.in")),
				        "UTF-8"
				    )
				);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		int numCases = 0;
		List<Integer> goodDancersInCase = new ArrayList<Integer>();
		try {
			numCases = Integer.parseInt(inFile.readLine());
			for (int caseNum = 0; caseNum < numCases; caseNum++) {	
				
				String[] words;
					words = inFile.readLine().split(" ");
				List<Integer> inputNums = new ArrayList<Integer>();
				for (String word : words) {
					inputNums.add(Integer.parseInt(word));
				}
				
				int nDancers = inputNums.remove(0);
				int nSurprisingTriplets = inputNums.remove(0);
				int bestResultLimit = inputNums.remove(0);
				List<Integer> totalPoints = new ArrayList<Integer>(inputNums);
				
				int maxDancersAboveResultLimit = 0;
				for (Integer dancerTotalPoints : totalPoints) {
					if((dancerTotalPoints + 2) >= 3 * bestResultLimit) {
						maxDancersAboveResultLimit += 1;
					} else if ((dancerTotalPoints + 4) >= 3 * bestResultLimit &&
							nSurprisingTriplets > 0 &&
							dancerTotalPoints >= bestResultLimit
							) {
						maxDancersAboveResultLimit += 1;
						nSurprisingTriplets--;
					}
				}
				goodDancersInCase.add(maxDancersAboveResultLimit);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		try {
			BufferedWriter bw = new BufferedWriter(
					new OutputStreamWriter(
							new FileOutputStream("B-small.out.txt"), "UTF-8"
							)
					);
			
			for (int caseNum = 0; caseNum < numCases; caseNum++) {
				bw.append("Case #" + (caseNum+1) + ": " + goodDancersInCase.get(caseNum));				
				bw.newLine();
			}
			bw.flush();
		} catch (IOException e) {
			e.printStackTrace();
		}
	
	}

}
