import java.io.*;
import java.util.*;

public class MultipleRoom implements Comparable<MultipleRoom> {
	
	private int start;
	private int finish;

	public MultipleRoom(int startTime, int finishTime) {
		start = startTime;
		finish = finishTime;
	}
	
	public int compareTo(MultipleRoom s) {
		return this.start - s.start;
	}
	
	public int getFinish() {
		return finish;
	}
	
	public int getStart() {
		return start;
	}
	
	public static void main(String[] args) throws Exception {
		
		Scanner fin = new Scanner(new File("schedule.in"));
		
		int numCases = fin.nextInt();
		
		// Loop through all cases.
		for (int i=1; i<=numCases; i++) {
			
			int numEvents = fin.nextInt();
			
		
			
			MultipleRoom[] events = new MultipleRoom[numEvents];
			
			// Read in all the information for each event.
			for (int j=0; j<numEvents; j++) {
				
				// This event.
				int start = fin.nextInt();
				int finish = fin.nextInt();
				events[j] = new MultipleRoom(start, finish);
			}
			
			// Greedily sort by start time.
			Arrays.sort(events);
			
			// Initialize all rooms to empty.
			int[] rooms = new int[numEvents];
			for (int j=0; j<numEvents; j++)
				rooms[j] = -1;
			int max = 0;
			
			// Now go through each event.
			for (int j=0; j<numEvents; j++) {
			
				// Find the first available room.
				int roomFind = 0;
				while (rooms[roomFind] > events[j].getStart()) 
					roomFind++;
					
				// Place the event in this room.
				rooms[roomFind] = events[j].getFinish();
				
				// Update if we've used a new room never used.
				if (roomFind+1 > max)
					max = roomFind+1;
				
			} 
			
			// Print out the result.
			System.out.println("Test case "+i+": A minimum of "+max+"  rooms are necessary.");
			
		}
	}	
}