import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;


public class Dancing {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		// read input file
		File file = new File("B-small-attempt4.in");
		//File file = new File("input.txt");
		BufferedReader br = new BufferedReader(new FileReader(file));
		String ln = "";
		int count = Integer.parseInt(br.readLine());

		// write output file
		File out = new File("outB.txt");
		BufferedWriter bw = new BufferedWriter(new FileWriter(out));
		
		int y = 0;
		for (int i=0; i < count; i++){
			ln = br.readLine();
			y = getY(ln);
			bw.write("Case #" + (i+1) + ": " + y);
			bw.newLine();
		}
		bw.close();
	}
	
	private static int getY(String str) {
		String[] data = str.split(" ");
		int n = Integer.parseInt(data[0]);
		int s = Integer.parseInt(data[1]);
		int p = Integer.parseInt(data[2]);
		int[] t = new int[n];
		for (int i=0; i < n; i++){
			t[i] = Integer.parseInt(data[i+3]);
		}
		int y = 0;
		int base = 0;
		for(int j=0; j < t.length; j++){
			base = t[j] / 3;
			if(base >= p) { y++; }
			else if(base == p-1){
				if(t[j] - (base+p) > base-1 && t[j] > 0){
					y++;
				} else if(s>0 && t[j] - (base+p) > base-2 && t[j] > 0){
					s -= 1;
					y++;
				}
			} else if(base == p-2){
				if(s > 0 && t[j] - (base+p) > base-1 && t[j] > 0){
					s -= 1;
					y++;
				}
			}
		}
		
		return y;
	}

}

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class problem2 {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		FileInputStream fstream = new FileInputStream("C:\\Profiles\\sys4qa\\Desktop\\in.txt");
		  // Get the object of DataInputStream
		  DataInputStream in = new DataInputStream(fstream);
		  BufferedReader br = new BufferedReader(new InputStreamReader(in));
		  String strLine;	
		  Integer T= 0;
		 
		  int N=0;
			int S=0;
		int 	p=0;
		ArrayList score=new ArrayList();
			
		ArrayList inputList =new ArrayList();
		ArrayList input =new ArrayList();
		  while ((strLine = br.readLine()) != null)   {
			  
			 
			  if (T==0)
			  {
				  T= Integer.parseInt(strLine);
			  }
			  else
			  {
				  String s[]=strLine.split(" ");
				   inputList =new ArrayList();
				  for(int i=0;i<s.length;i++)
					  inputList.add(Integer.parseInt(s[i]));
				  input.add(inputList);
				
			  }
			  
			  }
			  //Close the input stream
			  in.close();
		
			  FileWriter fstream1 = new FileWriter("C:\\Profiles\\sys4qa\\Desktop\\out.txt");
			  BufferedWriter out = new BufferedWriter(fstream1);
			 
			  
		
int id=0;
		Iterator iter=input.iterator();
		while (iter.hasNext()) {
			ArrayList ip= (ArrayList) iter.next();
			N = (Integer)ip.get(0);
			S= (Integer) ip.get(1);
			p=(Integer) ip.get(2);
			score=new ArrayList();
			Iterator iter1= ip.subList(3, N+3).iterator();
			while (iter1.hasNext()) {
				score.add(iter1.next());
			}
			int output= execute(score,N,S,p);
			id++; 
			
			 out.write("Case #"+id+": "+output+"\n");
		}
		//Close the output stream
		  out.close();

	
		
		
		}

	

	static int execute(ArrayList score,int N,int S, int p) {

		int count=0;
		int min=0;
		if (p>=2)
		min =(p-1)*3+1;
		else
			min=p*3;
		
		int surpiseMin = min-2;
	
		for (int i=0;i<N;i++)
		{
			if ((Integer)score.get(i)>=min)
			count++;
			else if (((Integer)score.get(i)>=surpiseMin) && S>0)
				{
				S--;
				count++;
				}				
		}
		return count;
		
	}
	}

	
