Problem-Free Problem Set

No attempts yetTime limit1sMemory limit128 MB

Problem

Contestants in an ACM programming contest are expected to be broadly familiar with many widely used algorithms. Because of this, when a contest is prepared the problems are chosen so that as many different algorithms as possible are exercised.

If a problem set contains even one algorithm that is never used by any of its problems, then it is a "flawed" problem set. For example, if no problem uses dynamic programming (DP), or no problem uses a graph-related algorithm, then the set is flawed.

This time you will build a "flawless" problem set from a subset of the problems that have already been prepared. A single algorithm may be used many times, but every required algorithm must be used at least once.

Because creating problems is very hard work, you must find, among all valid sets, the one that uses the fewest problems, so that the remaining problems can be saved for the next contest.

Input

The first line contains the number of test cases $K$.

The first line of each test case contains two integers $M$ and $N$. ($1 \le M, N \le 20$)

$M$ is the number of algorithms that must be used in the contest, and $N$ is the number of prepared problems.

The required algorithms are numbered with the integers from $1$ to $M$, and the problems are named $A$, $B$, $C$, $\dots$ in order, starting from the first one.

The next $N$ lines each list, from the first problem to the $N$-th problem, the algorithm numbers that the problem uses, separated by spaces.

Output

For each test case, first print Data Set K:, where $K$ is the test case number starting from $1$. Then, after a single space, print the problems of a smallest set that covers every algorithm from $1$ to $M$, listed by name in alphabetical order and separated by single spaces.

If several smallest valid sets exist, print the one whose problem names come first in lexicographical order.

Every test case is guaranteed to have an answer.

Print one blank line between consecutive test cases.