package com.gcj.parser;

public class MaxPoints {

	public static int normal(int value){
		int toReturn = 0;
		switch (value) {
		case 0 : toReturn = 0 ; break;
		case 1 : toReturn = 1 ; break;
		case 2 : toReturn = 1 ; break;
		case 3 : toReturn = 1 ; break;
		case 4 : toReturn = 2 ; break;
		case 5 : toReturn = 2 ; break;
		case 6 : toReturn = 2 ; break;
		case 7 : toReturn = 3 ; break;
		case 8 : toReturn = 3 ; break;
		case 9 : toReturn = 3 ; break;
		case 10 : toReturn = 4 ; break;
		case 11 : toReturn = 4 ; break;
		case 12 : toReturn = 4 ; break;
		case 13 : toReturn = 5 ; break;
		case 14 : toReturn = 5 ; break;
		case 15 : toReturn = 5 ; break;
		case 16 : toReturn = 6 ; break;
		case 17 : toReturn = 6 ; break;
		case 18 : toReturn = 6 ; break;
		case 19 : toReturn = 7 ; break;
		case 20 : toReturn = 7 ; break;
		case 21 : toReturn = 7 ; break;
		case 22 : toReturn = 8 ; break;
		case 23 : toReturn = 8 ; break;
		case 24 : toReturn = 8 ; break;
		case 25 : toReturn = 9 ; break;
		case 26 : toReturn = 9 ; break;
		case 27 : toReturn = 9 ; break;
		case 28 : toReturn = 10 ; break;
		case 29 : toReturn = 10 ; break;
		case 30 : toReturn = 10 ; break;

		}

		return toReturn;
	}

	public static int surprising(int value){
		int toReturn = 0;
		switch (value) {
		case 0 : toReturn = 0 ; break;
		case 1 : toReturn = 1 ; break;
		case 2 : toReturn = 2 ; break;
		case 3 : toReturn = 2 ; break;
		case 4 : toReturn = 2 ; break;
		case 5 : toReturn = 3 ; break;
		case 6 : toReturn = 3 ; break;
		case 7 : toReturn = 3 ; break;
		case 8 : toReturn = 4 ; break;
		case 9 : toReturn = 4 ; break;
		case 10 : toReturn = 4 ; break;
		case 11 : toReturn = 5 ; break;
		case 12 : toReturn = 5 ; break;
		case 13 : toReturn = 5 ; break;
		case 14 : toReturn = 6 ; break;
		case 15 : toReturn = 6 ; break;
		case 16 : toReturn = 6 ; break;
		case 17 : toReturn = 7 ; break;
		case 18 : toReturn = 7 ; break;
		case 19 : toReturn = 7 ; break;
		case 20 : toReturn = 8 ; break;
		case 21 : toReturn = 8 ; break;
		case 22 : toReturn = 8 ; break;
		case 23 : toReturn = 9 ; break;
		case 24 : toReturn = 9 ; break;
		case 25 : toReturn = 9 ; break;
		case 26 : toReturn = 10 ; break;
		case 27 : toReturn = 10 ; break;
		case 28 : toReturn = 10 ; break;
		case 29 : toReturn = 10 ; break;
		case 30 : toReturn = 10 ; break;

		}
		return toReturn;
	}

}

import java.util.Scanner;


public class B {
	
	public static void main(String[] argv){
		Scanner in = new Scanner (System.in);
		int T=in.nextInt();
		
		for(int i=0; i<T; i++){
			int N=in.nextInt();int Surp=in.nextInt();int p=in.nextInt();
			int[] NS=new int[N];int[] S=new int[N];
			for(int k=0; k<N; k++){
				int t=in.nextInt();
				if(t==0){
					NS[k]=0; S[k]=0;
				}
				else if(t%3==0){
					NS[k]=t/3;  S[k]=t/3+1;
				}
				else if(t%3==1){
					NS[k]=(t-1)/3+1;  S[k]=NS[k];
				}
				else{
					NS[k]=(t-2)/3+1; S[k]=(t-2)/3+2;
				}
			}
			//prT(NS); prT(S);
			int Rep=0;
			int ind=0;
			
			while(Surp>0 & ind<N){
				if(S[ind]==p & NS[ind]==p-1){
					Rep++;
					S[ind]=-1;
					NS[ind]=-1;
					Surp--;
				}
				ind++;
			}
			
			ind =0;
			while(Surp>0 & ind<N){
				if(S[ind]>=p ){
					Rep++;
					NS[ind]=-1;
					Surp--;
				}
				ind++;
				
			}
			
			for(int k=0; k<N; k++){
				if(NS[k]>=p)
					Rep++;
			}
			
			
			System.out.println("Case #"+(i+1)+": "+Rep);
			//System.out.println();
		}
		
	}
	
	public static void prT(int[] t){
		System.out.println();
		for(int x:t)
			System.out.print(x+" ");
	}

}
