/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package IO;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
    
/**
 * 
 * @author dannocz
 */
public class InputReader {
    
    public static Input readFile(String filename){
        try {
              
              /*  Sets up a file reader to read the file passed on the command
          77        line one character at a time */
              FileReader input = new FileReader(filename);
              
              /* Filter FileReader through a Buffered read to read a line at a
                 time */
              BufferedReader bufRead = new BufferedReader(input);
              
              String line;    // String that holds current file line
              int count = 0;  // Line number of count 
              ArrayList<String> cases= new ArrayList<String>();
              
              // Read first line
              line = bufRead.readLine();
              int noTestCases=Integer.parseInt(line);
              count++;
              
              // Read through file one line at time. Print line # and line
              while (count<=noTestCases){
                  //System.out.println("Reading. "+count+": "+line);
                  line = bufRead.readLine();
                  cases.add(line);
                  count++;
              }
              
              bufRead.close();
              
              return new Input(noTestCases,cases);
              
          }catch (ArrayIndexOutOfBoundsException e){
              /* If no file was passed on the command line, this expception is
              generated. A message indicating how to the class should be
              called is displayed */
              e.printStackTrace();        
  
          }catch (IOException e){
              // If another exception is generated, print a stack trace
              e.printStackTrace();
          }
        
        return null;
          
      }// end main
    }

import java.io.File;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;

public class B {

	public static void readFile() throws FileNotFoundException {
		File f = new File("B-large.in");
		Scanner in = new Scanner(f);
		PrintWriter out = new PrintWriter(new File("B-large"));

		int T, S, p, N;

		T = in.nextInt();
		//System.out.println(T);

		ArrayList<int[]> L = new ArrayList<int[]>();
		int found, q, r;

		for (int i = 0; i < T; i++) {
			found = 0;
			N = in.nextInt();
			//System.out.print(N + " ");
			S = in.nextInt();
			//System.out.print(S + " ");
			p = in.nextInt();
			//System.out.println(p);

			int[] totalPoints = new int[N];

			for (int j = 0; j < N; j++) {
				totalPoints[j] = in.nextInt();
				q = totalPoints[j] / 3;
				r = totalPoints[j] % 3;
				// //System.out.println(q + "--" + r);
				if (r == 0)
					L.add(new int[] { q, q, q });
				else if (r == 1)
					L.add(new int[] { q, q, q + 1 });
				else
					L.add(new int[] { q, q + 1, q + 1 });

				int lastIndex = L.size() - 1;

				if (L.get(lastIndex)[0] >= p || L.get(lastIndex)[1] >= p
						|| L.get(lastIndex)[2] >= p) {
					//System.out.println("1111111111");
					found++;
					continue;
				} else {
					if (L.get(lastIndex)[0] + L.get(lastIndex)[1]
							+ L.get(lastIndex)[2] < 3 * p - 4) {
						//System.out.println("2222222222");
						continue;
					}
					if (S > 0 && q > 1) {
						//System.out.println("333333333333");
						L.get(lastIndex)[1]--;
						L.get(lastIndex)[2]++;
						S--;
						found++;
					}
				}
				
			}
			//System.out.println("Found : " + found);
			if (i < T - 1)
				out.println("Case #"+ (i + 1) + ": " + found);
			else
				out.print("Case #"+ (i + 1) + ": " + found);
		}

		// //System.out.println(L.get(3)[0]);

		out.close();
	}

	public static void main(String[] args) throws FileNotFoundException {
		readFile();

	}

}
