import java.util.*;

public class RoadB
{
	public static final int MAXSIZE = 1000;
	public static int winsize;
	public static boolean [] win = new boolean[MAXSIZE+1];

	public static void main(String [] args)
	{
		String line;
		int ncases;
		Scanner in = new Scanner(System.in);

		ncases = in.nextInt();
		for(int icase=1; icase<=ncases; icase++) {
			for(int i=0; i<winsize+1; i++)
				win[i] = false;
			int nlines;
			nlines = in.nextInt();
			winsize = in.nextInt();
			int ncomp = 0, max = 0;
			line = in.nextLine();
			for(int j=0; j<nlines; j++) {
				line = in.nextLine();
				for(int i=ncomp+1; i<=ncomp+winsize; i++) {
					if (line.indexOf(i+"") != -1) {
						ncomp = process(i, ncomp);
						if (i > max)
							max = i;
					}
				}
			}
			System.out.println("Case " + icase + ": " + ncomp + " " + max);
		}
	}

	public static int process(int val, int ncomp)
	{
		if (val > ncomp)
			win[val-ncomp-1] = true;
		while(win[0]) {
			ncomp++;
			for(int i=0; i<winsize; i++)
				win[i] = win[i+1];
		}
		return ncomp;
	}
}
