在 Google,有许多不同领域的专家。例如,MapReduce 专家、Bigtable 专家、SQL 专家等。主管需要将专家合理地分配到各个项目中,以确保项目顺利进行。
主管拥有 $N$ 个项目。对于第 $i$ 个项目,它需要 $C_i$ 个不同领域的专家,分别为 $a_{i,0}, a_{i,1}, \dots, a_{i,C_i-1}$。主管手下有 $M$ 名工程师。对于第 $i$ 名工程师,他是 $D_i$ 个不同领域的专家,分别为 $b_{i,0}, b_{i,1}, \dots, b_{i,D_i-1}$。
每名工程师只能被分配到一个项目中,主管可以为同一个项目分配多名工程师。只有当分配给项目的工程师所掌握的领域覆盖了该项目所需的所有领域时,项目才能成功完成,这意味着对于项目所需的每一个领域,至少要有一名工程师掌握它。
主管想知道最多能有多少个项目可以成功完成。
输入格式
输入的第一行包含测试用例的数量 $T$。接下来是 $T$ 个测试用例。每个测试用例的第一行包含两个整数 $N$(项目数量)和 $M$(工程师数量)。接下来是 $N$ 行,第 $i$ 行包含第 $i$ 个项目的信息,首先是一个整数 $C_i$,随后是 $C_i$ 个整数 $a_{i,0}, a_{i,1}, \dots, a_{i,C_i-1}$,表示第 $i$ 个项目所需的专家领域。接下来是 $M$ 行,第 $i$ 行包含第 $i$ 名工程师的信息,首先是一个整数 $D_i$,随后是 $D_i$ 个整数 $b_{i,0}, b_{i,1}, \dots, b_{i,D_i-1}$,表示第 $i$ 名工程师所掌握的专家领域。
输出格式
对于每个测试用例,输出一行 “Case #x: y”,其中 $x$ 是测试用例编号(从 1 开始),$y$ 是可以成功完成的项目的最大数量。
数据范围
- $1 \le T \le 100$
- $1 \le N, M \le 10$
- $1 \le C_i \le 3$
- $1 \le D_i \le 2$
- $1 \le a_{i,j}, b_{i,j} \le 100$
样例
输入 1
1 3 4 3 40 77 64 3 10 40 20 3 40 20 77 2 40 77 2 77 64 2 40 10 2 20 77
输出 1
Case #1: 2
说明 1
对于第一个测试用例,共有 3 个项目和 4 名工程师。一种最优解是将第一名工程师(掌握 40, 77)和第二名工程师(掌握 77, 64)分配给项目 1,这可以覆盖所需的领域 40, 77, 64。将第三名工程师(掌握 40, 10)和第四名工程师(掌握 20, 77)分配给项目 2,这可以覆盖所需的领域 10, 40, 20。虽然还有其他分配方案,但没有方案能完成所有 3 个项目。因此答案为 2。