import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

public class CodeJam {

//	public static final String INPUT_FILE_PATH = "D://CodeJamInput.txt";
	public static final String INPUT_FILE_PATH = "D://B-large.in";
	public static final String OUTPUT_FILE_PATH = "D://CodeJamOutput.txt";

	public static List<String> readInput() {
		List<String> list = new ArrayList<String>();
		try {
			BufferedReader input = new BufferedReader(new FileReader(
					INPUT_FILE_PATH));
			try {
				String line = null;

				while ((line = input.readLine()) != null) {
					list.add(line);
				}
			} finally {
				input.close();
			}
		} catch (IOException ex) {
			ex.printStackTrace();
		}
		
		return list;
	}

	public static void writeOutput(List<String> output) {
		PrintWriter writer = null;
		try {
			writer = new PrintWriter(new FileWriter(OUTPUT_FILE_PATH));
			for (String line : output) {
				writer.println(line);
			}
			writer.flush();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (writer != null)
				writer.close();
		}
	}
	
	public static void main(String[] args) {
		List<DanceFloor> danceFloors = DanceFloor.parseFromFile(CodeJam.readInput());
		List<String> output = new ArrayList<String>();

		for(int i = 0; i < danceFloors.size(); i++) {
			System.out.println(danceFloors.get(i));
			String line = "";
			line += "Case #" + (i + 1) + ": " + danceFloors.get(i).calculate();
			output.add(line);
		}
		
		CodeJam.writeOutput(output);
	}
}

class DanceFloor {

	private List<Integer> tripletsTotalCounts;
	private int surpriseCount;
	private int targetScore;
	private int dancersCount;

	public DanceFloor(List<Integer> tripletsTotalCounts, int surpriseCount,
			int targetScore, int dancersCount) {
		this.tripletsTotalCounts = tripletsTotalCounts;
		this.surpriseCount = surpriseCount;
		this.targetScore = targetScore;
		this.dancersCount = dancersCount;
	}

	public int calculate() {
		int result = 0;
		
		if (targetScore == 0) return dancersCount;
		
		for (int i = 0; i < tripletsTotalCounts.size(); i++) {
			int total = tripletsTotalCounts.get(i);

			if (total < (targetScore * 3 - 4)) {
				tripletsTotalCounts.remove(i--);
			} else if (total == 0) {
				tripletsTotalCounts.remove(i--);
			}
		}
		
		for (int i = 0; i < tripletsTotalCounts.size(); i++) {
			int total = tripletsTotalCounts.get(i);

			if ((surpriseCount > 0) && (total == targetScore * 3 - 4)) {
				result++;
				surpriseCount--;
				tripletsTotalCounts.remove(i--);
			} else if ((surpriseCount == 0) && (total == targetScore * 3 - 4)) {
				tripletsTotalCounts.remove(i--);
			}
		}
		
		for (int i = 0; i < tripletsTotalCounts.size(); i++) {
			int total = tripletsTotalCounts.get(i);

			if ((surpriseCount > 0) && (total == targetScore * 3 - 3)) {
				result++;
				surpriseCount--;
				tripletsTotalCounts.remove(i--);
			} else if ((surpriseCount == 0) && (total == targetScore * 3 - 3)) {
				tripletsTotalCounts.remove(i--);
			}
		}
		
		result += tripletsTotalCounts.size();
		
		return result;
	}

	public static List<DanceFloor> parseFromFile(List<String> readInput) {
		List<DanceFloor> result = new ArrayList<DanceFloor>();
		int testCaseCount = Integer.parseInt(readInput.get(0));

		for (int i = 0; i < testCaseCount; i++) {
			String line[] = readInput.get(i + 1).split(" ");

			List<Integer> totalCounts = new ArrayList<Integer>();
			for (int j = 0; j < Integer.parseInt(line[0]); j++) {
				totalCounts.add(Integer.parseInt(line[3 + j]));
			}

			result.add(new DanceFloor(totalCounts, Integer.parseInt(line[1]),
					Integer.parseInt(line[2]), Integer.parseInt(line[0])));
		}

		return result;
	}

	@Override
	public String toString() {
		return "dancersCount = " + dancersCount + "; surpriseCount = " + surpriseCount 
								 + "; targetScore = " + targetScore + "; tripletsTotalCounts" 
								 + tripletsTotalCounts.toString();
	}
}




package sabriel;



import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;


import java.util.StringTokenizer;

/**
 *
 * @author sabriel
 */
public class DanceIt {

    
    public static void main(String[] args) {
        try {
            FileInputStream fstream =
                new FileInputStream("C:\\Users\\sabriel\\Documents\\NetBeansProjects\\Sabriel\\p2\\input.in");
            DataInputStream in = new DataInputStream(fstream);
            BufferedReader  br = new BufferedReader(new InputStreamReader(in));
            String          strLine;
            BufferedWriter  out1 = new BufferedWriter(
                                      new FileWriter(
                                          "C:\\Users\\sabriel\\Documents\\NetBeansProjects\\Sabriel\\p2\\out.out",
                                          true));
            String times = br.readLine();
            int    n     = Integer.valueOf(times);

            System.out.println("number of test cases : " + n);

            // will be used vars
            
            int    currentCase = 0;
            int G;
            int S ;
            int P;
            int fav;
            int s = 0;
            
            // processor starts 
            
            while ((strLine = br.readLine()) != null) {
                
                ++currentCase;
               
                
                StringTokenizer st=new StringTokenizer(strLine," ");
                G=Integer.valueOf(st.nextToken());
                int scores[]=new int[G];
                S=Integer.valueOf(st.nextToken());
                P=Integer.valueOf(st.nextToken());
                int tmp=0;
                
                  System.out.println("\n"+G+" "+P+" "+P);
                
               while(st.hasMoreTokens()){
                
                scores[tmp]=Integer.valueOf(st.nextToken());
                System.out.print(scores[tmp]+" ");   
                ++tmp;
                
               }
               
               
               //  logic 
               fav=0;
               s=0;
              
               
               for (int i=0;i<G;++i)
               {
                 
                   System.out.println("\nchecking score  :  "+scores[i]+"  for  : "+P);
                   
               if (P*3==scores[i]){
                   ++fav;System.out.println("set is : "+ P+"*"+3);
                   
               }
               
               else if ((P+(P+1)+(P-1))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P+(P+1)+(P-1))");
               }
               
               else if ((P*2+(P-1))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P*2+(P-1))");
               }
               
               else if ((P*2+(P-2))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P*2+(P-2))");
                   ++s;System.out.println("***  s incremented  ****");
               }
               
               else if ((P+(P-2)+(P-1))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P+(P-2)+(P-1)");
                   ++s;System.out.println("***  s incremented  ****");
               }
               
               
               else if ((P+(P+1)+(P+2))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P+(P+1)+(P+2))");
                   ++s;System.out.println("***  s incremented  ****");
               }
               
               else if ((P+(P+2)+(P+2))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P+(P+2)+(P+2))");
                   ++s;System.out.println("***  s incremented  ****");
               }
               
               else if ((P+(P-2)+(P-2))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P+(P-2)+(P-2))");
                   ++s;System.out.println("***  s incremented  ****");
               }
               
               else if ((P*2+(P+2))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P*2+(P+2))");
                   ++s;System.out.println("***  s incremented  ****");
               }
               
               else if ((P*2+(P+1))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P*2+(P+1))");
                   ++s;System.out.println("***  s incremented  ****");
               }
               else if ((P+(P-1)+(P-1))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P+(P-1)+(P-1))");
               }
               
               
               
               else if ((P+(P+1)+(P+1))==scores[i]){
                   ++fav;System.out.println("set is : "+ "(P+(P+1)+(P+1))");
               }
               
               
             
               
               }
               // logic ends
               if(s==S){
               System.out.println("favoooo  :  "+fav  + "  s :  " +s);  
               }
               else{
                   System.out.println("S was "+S  + " and   s :  " +P+"   where fav is : "+fav);  
                System.out.println("\n*******************\n*******************\n*******************\n");
            }
            }

            //out1.newLine();
            //out1.flush();

            // Close the input stream
            in.close();
            //out1.close();
        } catch (Exception e) {    // Catch exception if any
            System.out.println("Error: " + e.getMessage() + "   " + e);
        }
    }
}



