题目描述
月亮有 个可能的组成部分,编号为 $1 , 2...$。你的手中还有 $m$ 个月亮碎片,第 $i$ 枚「碎片」 包含 月亮 的 $k_i$ 个「组成部分」,分别是 $a_{i,1},a_{i,2}...a_{i,k}$。特别的,不同的碎片可能会包含相同的组成部分。
你需要从中选出一些碎片并将它们分成两组,满足两组碎片拼出的两个月亮完全相同,并输出任意一种合法 方案(这样你才能够把它们分别放回天上和水中)。如果无解输出 $-1$。
下面是一些注意事项。
一组碎片拼成的月亮具有且仅具有在这组碎片里出现过的组成部分(即月亮所含的组成部分是该组碎片所含组成部分的并集),具体可见样例解释。
出题人允许你造两个残缺的月亮(即你造出的月亮不必具有全部的 $n$ 个部分),但你不能造两个空的月亮滥竽充数(即两组碎片的数量都不能为 $0$。)。
输入格式
从 $moon.in$ 中读入数据。
第一行两个正整数 $n$ 表示月亮有 $n$ 个可能的组成部分,你有 $m$ 个碎片。
接下来一行 $m$ 个数,第 $i$ 个数为 $k_i$,表示第 $i$ 枚碎片所含月亮组成部分的数量。
最后 $m$ 行,第 $i + 2$ 行 $k_i$ 个数,分别是 $a_{i,1},a_{i,2}...a_{i,k_i}$。
输出格式
将答案输出到 $moon.out$ 中。
如果无解则输出 $-1$ 即可。否则共输出三行,第一行两个正整数 $A,B$,分别表示你的方案中第一组和第二 组所含碎片的数量。
第二行 $A$ 个正整数 $S_1,S_2...S_A$,表示你选出的第一组包含了这些碎片。
第三行 $B$ 个正整数 $t_1,t_2...t_B$,表示你选出的第二组包含了这些碎片。
注意,如果有解,你需要保证 $1 \leq A,B,s_i,t_i \leq m$,且后两行输出的所有元素必须两两不同,否则丑陋的 spj 可能会出现未知问题
样例
样例输入 #1:
4 5
2 3 1 3 1
1 4
2 3 4
4
1 2 3
1
样例输出 #1:
2 3
1 2
3 4 5
样例解释
当第一组选择第 $1,2$ 个碎片,第二组选择第 $3,4,5$ 个碎片时,两组都会拼出具有第 $1,2,3,4$ 个部分的月亮。这满足题目要求,我们输出这两组即可。
当然,第一组选择第 $1$ 个碎片,第二组选择第 $3,5$ 个碎片时,两组都会拼出具有第 $1,4$ 个部分的月亮。这也满足题目要求,因此输出这两组也可以得分。
样例 #2
见下发文件,该样例满足子任务 5 的要求。