在宇宙冒险者的星际比赛中,各路英雄们纷纷参与,期待着最后的荣耀。
由于他们来自不同的星系,对所有冒险者都不太了解,于是他们纷纷对一些他们熟悉的冒险者的实力进行了评估,即对部分冒险者做了相对排名的预测,并将这些预测传达给星际联盟。
比赛结束后,他们向星际联盟询问最后的比赛排名,但星际联盟的工作人员忘记了具体的排名,只记得哪些冒险者的预测是准确的,哪些是错误的。
他们希望知道比赛的排名可能是什么。
第一行输入两个整数 n,m。n 表示参加比赛的冒险者数量,m 表示参与预测成绩的冒险者的数量。冒险者编号从 0 到 n-1 。
接下来 m 行,每行为一个参赛选手的相对排名预测。
每行第一个数 c 表示他预测的冒险者人数,后面跟着 c 个 0 \sim n-1 的不同的数,表示他预测的冒险者相对排名,最后还有一个数, 0 表示这个预测是错误的,1 表示这个预测是正确的。
第一行输出一个整数 r,代表有多少种排名的可能。
下面 r 行,每行输出一个 0 \sim n-1 的排列,为某一个可能的排名,相邻的数间用空格隔开。
所有排名按字典序依次输出。
3 2 2 0 1 1 2 1 2 0
2 0 2 1 2 0 1
3 2 2 0 1 1 2 2 1 0
1 0 1 2
9 8 3 1 2 3 1 4 1 5 2 6 0 3 3 5 8 0 4 2 7 6 5 0 5 1 8 4 5 2 0 2 4 2 0 2 8 1 0 3 3 2 1 0
18486 0 1 2 3 4 6 7 8 5 0 1 2 3 4 6 8 5 7 0 1 2 3 4 6 8 7 5 0 1 2 3 4 7 8 5 6 0 1 2 3 4 8 5 6 7 0 1 2 3 4 8 5 7 6 0 1 2 3 4 8 6 5 7 0 1 2 3 4 8 6 7 5 0 1 2 3 4 8 7 5 6 0 1 2 3 6 4 7 8 5 省略剩余的输出,剩余的输出需要同学自行计算……
有 3 名参加比赛的冒险者,他们的编号分别是 0 1 2,有 2 名参与预测的冒险者。
第 1 名冒险者预测结果为 0 1,即:0 的排名在 1 的前面,他的预测是正确的。
第 2 名冒险者预测结果为 1 2,即:1 的排名在 2 的前面,他的预测是错误的。
0 1 2 的所有可能的排名有 6 种,结合预测对 8 种可能的排名分别讨论如下:
0 1 2,由于 1 在 2 的前面是错误的,因此该排名不可能。
0 2 1,符合预测的结果。
1 0 2,由于 0 应当在 1 的前面,因此该排名不可能。
1 2 0,由于 0 应当在 1 的前面,因此该排名不可能。
2 0 1,符合预测的结果。
2 1 0,由于 0 应当在 1 的前面,因此该排名不可能。
综上,一共有 2 个可能的排名,分别是:0 2 1 和 2 0 1。
对于 100\% 的数据,满足 1 \le n \le 10, 2 \le c \le n, 1 \le m \le 10。
保证数据合法,且答案中排名可能数不超过 20000 。
对于一个排名序列,一个预测是正确的,当且仅当预测的排名的相对顺序是排名序列的一个子序列。
一个预测是错误的,当且仅当这个预测只要有两个数的顺序不正确,这个预测就是不正确的。
可能的排列,必须符合所有正确的预测。某个排列只要符合一个错误的预测,该排列就不是可能的排列。