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 one.codejam.b;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;

public class DancingGooglers {

    private int T;//number of testcases
    private int N;//number of googlers
    private int S;//number of surprising triplets of scores
    private int p;//best result for each case
    private int[] scores;
    private int ti;//score for each googler
    private Scanner input;
    //method to calculate maximum number of googlers

    public void openFile() {
        Scanner cin = new Scanner(System.in);
        System.out.println("Enter File Path containing test data: ");
        String filePath = cin.nextLine();
        try {
            input = new Scanner(new File(filePath));
        } catch (FileNotFoundException ex) {
            System.err.println("Error opening file!");
            System.exit(1);
            Logger.getLogger(DancingGooglers.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
//small input

    public void readFile() {

        if (input.hasNext()) {
            //read number of test cases
            T = input.nextInt();
            //enforce T limit 

            //move to first case
            int test_count = 0;
            input.nextLine();
            //for each test case read N, S, p, and N values to array ti and call output method
            while (input.hasNext() && (test_count <= T)) {
                test_count++;
                N = input.nextInt();
                //proceed for this input
                S = input.nextInt();
                p = input.nextInt();
                scores = new int[N];
                //populate scores
                for (int i = 0; i < N; i++) {
                    scores[i] = input.nextInt();
                }
                Arrays.sort(scores);
                //call output method
                output(test_count, S, p, scores);
            }

        }
    }

    public void closeFile() {
        input.close();
    }

    public void output(int test_case, int surprises, int best_result, int[] scores) {
        if (p > 1) {
            int q = p * 3 - 2;
            int s = p * 3 - 4;
            int count = 0;
            int pt = N - 1;

            for (int i = N - 1; i >= 0; i--) {
                if (scores[i] >= q) {
                    count++;
                    pt--;
                }
            }
            while (pt >= 0 && scores[pt] >= s && S > 0) {
                count++;
                pt--;
                S--;
            }
            System.out.println("Case #" + test_case + ": " + count);
        } else if (p == 1) {
            int j = 0;
            for (j = 0; j < N; j++) {
                if (scores[j] > 0) {
                    break;
                }
                
            }
            System.out.println("Case #" + test_case + ": " + (N - j));
        } else if (p == 0) {
            System.out.println("Case #" + test_case + ": " + N);
        }
    }

    public static void main(String[] str) {
        DancingGooglers dG = new DancingGooglers();
        dG.openFile();
        dG.readFile();
        dG.closeFile();
    }
}
