import java.util.*;

public class B {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        B th = new B();
        for (int i = 0; i < T; i++) {
            int n = sc.nextInt();
            int s = sc.nextInt();
            int p = sc.nextInt();
            int[] t = new int[n];
            for (int j = 0; j < n; j++) {
                t[j] = sc.nextInt();
            }
            int c = th.getAnswer(s,p,t);
            System.out.println("Case #" + (i+1) + ": " + c);
        }
    }
    public int getAnswer(int s, int p, int[] t) {
        int A1 = p + p-1+p-1;
        int A2 = p + p-2+p-2;
        if (A1 < 0)
            A1 = 0;
        if (A2 < 0)
            A2 = 1;
        int remain = s;
        int count = 0;
        int n = t.length;
        for (int i = 0; i < n; i++) {
            if (t[i] >= A1) {
                count++;
            } else if (t[i] < A1 && t[i] >= A2) {
                if (remain > 0) {
                    remain--;
                    count++;
                }
            }
        }
        return count;
    }
}


import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class DancingGooglers{

    private static final int NUMBEROFJUDGES = 3;  

    public static void main(String[] args) throws IOException {
        
        BufferedReader br = null; 
        try {
            
        
            br = new BufferedReader(new FileReader("B-large.in"));
            PrintStream out = new PrintStream(new File("B-Large.out"));
            
            int testcases = Integer.parseInt(br.readLine());
    
            for (int casenr = 1; casenr <= testcases; casenr++) {
    
                String line = br.readLine();
                Scanner scanner= new Scanner(line);
                
                int numOfGoogler = scanner.nextInt();
                int numOfSurprising = scanner.nextInt();
                int bestResult = scanner.nextInt();
                ArrayList<Integer> totalPoints =new ArrayList<Integer> ();
                
                for (int i=0;i<numOfGoogler ;i++){
                    totalPoints.add(scanner.nextInt());
                }
                Collections.sort(totalPoints, Collections.reverseOrder());
                
                int numberOfBestGoogler = 0;
                for (int i= 0;i<numOfGoogler ;i++){
                    double averagePoint = ((totalPoints.get(i)*1.0)/ NUMBEROFJUDGES);
                    if ( averagePoint > (bestResult-1) ){
                        numberOfBestGoogler++;
                    }
                    else {
                        if ((Math.max((bestResult-2),0)*(NUMBEROFJUDGES-1) <= (totalPoints.get(i)-bestResult) ) && (numOfSurprising>0)) {
                            numOfSurprising--;
                            numberOfBestGoogler++;
                        }
                    }
                        
                }
                
                
                System.out.printf("Case #%d: %d\n", casenr, numberOfBestGoogler);
                out.printf("Case #%d: %s\n", casenr, numberOfBestGoogler);
    
            }
        
        } catch(FileNotFoundException fe) {
            fe.printStackTrace();
        } catch(IOException ie) {
            ie.printStackTrace();
        } finally {
            try {
              if(br != null) {
                 br.close();
              }
            } catch (IOException ex) {
                ex.printStackTrace();
            }  
        }
    }    

}


