// WhatTimeIsIt.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <stdlib.h>
//#define	SHOW_DEBUG

#define	MAX_CLOCKS	10

int clktimes[MAX_CLOCKS];
int clkdiffs[MAX_CLOCKS];
char diffs[MAX_CLOCKS];

int main(int argc, char* argv[])
{
	char ibuf[64];
	int i, n, p, j, nc, h, m, k, nt, t, cnt, tsave;
	unsigned short wMask;

	if(::fgets(&(ibuf[0]), sizeof(ibuf), stdin) != NULL){
		n = ::atoi(&(ibuf[0]));
		for(i = 1; i <= n; i++){
			if(::fgets(&(ibuf[0]), sizeof(ibuf), stdin) == NULL){
				::fprintf(stderr, "Premature EOF for problem %d\n", i);
				break;
			}
			if(::sscanf(&(ibuf[0]), "%d %d", &(p), &(nc)) != 2){
				::fprintf(stderr, "Invalid first line in dataset for problem %d\n", i);
				break;
			}
			if(p != i){
				::fprintf(stderr, "Problem mistmatch: %d (should be %d)\n", p, i);
				break;
			}
			for(j = 1; j <= nc; j++){
				if(::fgets(&(ibuf[0]), sizeof(ibuf), stdin) == NULL){
					::fprintf(stderr, "Premature EOF for problem %d clock data\n", i);
					break;
				}
				if(::sscanf(&(ibuf[0]), "%d:%d", &(h), &(m)) != 2){
					::fprintf(stderr, "Bad time for clock %d problem %d\n", j, i);
					break;
				}
				if(h < 1 || h > 12 || m < 0 || m > 59){
					::fprintf(stderr, "Bad time for clock %d problem %d\n", j, i);
					break;
				}
				clktimes[j-1] = (h%12)*60 + m;
			}
			if(j <= nc){
				break;
			}
			for(j = 1; j <= nc; j++){
				if(::fgets(&(ibuf[0]), sizeof(ibuf), stdin) == NULL){
					::fprintf(stderr, "Premature EOF for problem %d clock diff data\n", i);
					break;
				}
				if(::sscanf(&(ibuf[0]), "%c%d:%d", &(diffs[j-1]), &(h), &(m)) != 3){
					::fprintf(stderr, "Bad diff %d problem %d\n", j, i);
					break;
				}
				if(h < 0){
					::fprintf(stderr, "Bad hour for diff %d problem %d\n", j, i);
					break;
				}
				h = h%12;
				if(h < 0 || h > 12 || m < 0 || m > 59){
					::fprintf(stderr, "Bad time diff %d problem %d\n", j, i);
					break;
				}
				clkdiffs[j-1] = h*60 + m;
				if(diffs[j-1] == '-'){
					clkdiffs[j-1] *= -1;
				}
#ifdef SHOW_DEBUG
				::printf("Prob %d: Clock %d:%5d  Diff:%c Mins:%5d\n", i, j, clktimes[j-1], diffs[j-1], clkdiffs[j-1]);
#endif
			}
			if(j <= nc){
				break;
			}
			cnt = 0;
			/* Brute force it... Try every minute between 12:00 and 11:59 */
			for(t = 0; t < 720; t++){
				/* wMask makes sure we use each clock only once */
				wMask = 0;
				for(j = 0; j < nc; j++){
					nt = t + clkdiffs[j];
					if(nt < 0){
						nt += 720;
					} else {
						nt %= 720;
					}
					for(k = 0; k < nc; k++){
						if(clktimes[k] == nt && (wMask & (1<<k)) == 0){
							/* Mark clock as used */
							wMask |= (1<<k);
							break;
						}
					}
					if(k >= nc){
						/* No time matches */
						break;
					}
				}
				if(j >= nc){
					cnt++;
					tsave = t;
				}
			}
			if(cnt == 0){
				::fprintf(stdout, "%d none\n", i);
			} else if(cnt > 1){
				::fprintf(stdout, "%d %d\n", i, cnt);
			} else {
				if(tsave < 60){
					::fprintf(stdout, "%d 12:%02d\n", i, tsave);
				} else {
					::fprintf(stdout, "%d %d:%02d\n", i, tsave/60, tsave%60);
				}
			}
		}
	}
	return 0;
}
