package code12.qualification;

import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;

public class B {
	public static String solve(int N, int S, int p, int[] t) {
		
		// 3a 		-> (a, a, a), *(a - 1, a, a + 1)
		// 3a + 1	-> (a, a, a + 1), *(a - 1, a + 1, a + 1)
		// 3a + 2	-> (a, a + 1, a + 1), *(a, a, a + 2)
		
		int numPNoS = 0;
		int numPWithS = 0;
		
		for (int i = 0; i < N; i++) {
			int a = (int)Math.floor(t[i] / 3);
			int r = t[i] % 3;
			
			switch (r) {
			case 0:
				if (a >= p) {
					numPNoS++;
				} else if (a + 1 >= p && a - 1 >= 0) {
					numPWithS++;
				}
				break;
			case 1:
				if (a >= p || a + 1 >= p) {
					numPNoS++;
				}
				break;
			case 2:
				if (a >= p || a + 1 >= p) {
					numPNoS++;
				} else if (a + 2 >= p) {
					numPWithS++;
				}
				break;
			}
		}
		
		return "" + (numPNoS + Math.min(S, numPWithS));
	}

	public static void main(String[] args) throws Exception {
		// file name
		//String fileName = "Sample";
		//String fileName = "B-small";
		String fileName = "B-large";
		
		// file variable
		File inputFile = new File(fileName + ".in");
		File outputFile = new File(fileName + ".out");
		Scanner scanner = new Scanner(inputFile);
		FileWriter writer = new FileWriter(outputFile);

		// problem variable
		int totalCase;
		int N, S, p;
		int[] t;

		// get total case
		totalCase = scanner.nextInt();

		for (int caseIndex = 1; caseIndex <= totalCase; caseIndex++) {
			// get input
			N = scanner.nextInt();
			S = scanner.nextInt();
			p = scanner.nextInt();
			t = new int[N];
			
			for (int i = 0; i < N; i++) {
				t[i] = scanner.nextInt();
			}
			
			String output = "Case #" + caseIndex + ": " + solve(N, S, p, t);
			System.out.println(output);
			writer.write(output + "\n");
		}
		scanner.close();
		writer.close();
	}
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dancing;
import java.io.*; 
import java.util.*; 

/**
 *
 * @author Ewka
 */
public class Dancing {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        FileReader fr=null;
        PrintWriter fw=null;
        BufferedReader br;
        int noOfLines=0;  
        int noOfGooglers=0;
        int noOfSurprising=0;
        int noOfOut=0;
        int p=0;
        int noOfUsedSurp=0;
        
        String[] temp;
        
        try
        {
            fw = new PrintWriter ("outputDancingPro.txt");
        }
        catch(Exception e)
        {
            System.out.print("nie udalo sie");
        }
        
        try
        {
            fr = new FileReader("B-large.txt");            
        }
        catch(FileNotFoundException e)
        {
               System.out.println(e.getMessage());
        }
        br = new BufferedReader(fr);
        String s;
        try{
                s=br.readLine();            
                noOfLines = Integer.parseInt(s);           
                for (int i=0;i<noOfLines;i++)
                {        
                     System.out.print("Case #"+(i+1)+": ");
                     fw.print("Case #"+(i+1)+": ");
                     noOfOut = 0;
                     noOfUsedSurp=0;
                     s=br.readLine();
                     temp = s.split(" ");
                     noOfGooglers = Integer.parseInt(temp[0]);
                     int[] Scores = new int[noOfGooglers];
                     noOfSurprising = Integer.parseInt(temp[1]);
                     p = Integer.parseInt(temp[2]);
                     for (int j=0;j<noOfGooglers;j++)
                     {
                         Scores[j] = Integer.parseInt(temp[j+3]);
                     }
                     
                     Arrays.sort(Scores);
                     for (int j=noOfGooglers-1;j>=0;j--)
                     {
                        if (p==0)
                        {
                            noOfOut=noOfGooglers;
                            break;
                        }
                        else if (Scores[j] == 0)
                            continue;
                        if (Scores[j]/3 >= p)
                        {
                                noOfOut++;
                        }
                        else if (Scores[j] >= (p+(p-2)+(p-2)))
                        {
                              if ((p+(p-1)+(p-1) == Scores[j]) ||  (p+(p)+(p-1) == Scores[j]))
                              {
                                  noOfOut++;
                              }
                              else if (noOfUsedSurp < noOfSurprising)
                              {
                                  if ((p+(p-2)+(p-2) == Scores[j]) ||  (p+(p-2)+(p-1) == Scores[j]))
                                  {
                                        noOfOut++;
                                        noOfUsedSurp++;
                                  }
                              }
                        }
                        else
                        {
                            break;
                        }
                     }
                     System.out.println(noOfOut);
                     fw.print(noOfOut);
                     fw.println();
                     
                }
                fr.close();
                fw.close();
        }
        catch(Exception e)
        {
            
        }
            
    }
}
