import java.util.Scanner; import java.util.StringTokenizer; import java.io.*; public class problems { private static boolean b[] = new boolean[21]; private static int aa[] = new int[21]; private static int [][] a = new int[21][21]; private static int m; private static int n; private static String ans = ""; public static void main(String[] args) throws IOException { Scanner fi = new Scanner(new File("problems.in")); int dataSets = fi.nextInt(); for (int count = 0; count < dataSets; count++) { for (int i = 0; i < 21; i++) { b[i] = false; aa[i] = 0; for (int j = 0; j < 21; j++) a[i][j] = 0; } ans = ""; m = fi.nextInt(); n = fi.nextInt(); fi.nextLine(); for (int i = 0; i < n; i++) { String s = fi.nextLine(); StringTokenizer st = new StringTokenizer(s); while (st.hasMoreTokens()) { int t = Integer.valueOf(st.nextToken()) - 1; a[i][t] = 1; } } rec(0); System.out.println("Data Set " + (count+1) + ": " + ans); System.out.println(); } fi.close(); } public static void check() { for (int i = 0; i < m; i++) { if (aa[i] == 0) { return; } } String s = ""; for (int i = 0; i < n; i++) { if (b[i]) s+= (char) (i+65) + " "; } if (s.length() < ans.length() || ans.equals("") || (s.length() == ans.length() && s.compareTo(ans) < 0)) { ans = s; } } public static void rec(int nn) { check(); for (int i = nn; i < n; i++) { if (!b[i]) { b[i] = true; for (int j = 0; j < m; j++) aa[j] += a[i][j]; rec(i+1); b[i] = false; for (int j = 0; j < m; j++) aa[j] -= a[i][j]; } } } }