敌对的比特国(Bitotia)对比特国(Byteotia)发动了突袭,并占领了其大片领土。比特国国王 Byteasar 打算在被占领区组织抵抗运动。Byteasar 自然地从挑选将构成运动骨干的人员开始。这些人将被分为两组:直接在占领区活动的“阴谋者”,以及在自由比特国内部活动的“支援组”。
然而,有一个问题——这种划分必须满足以下条件:
- 支援组中的每一对人必须互相认识——这将使整个小组协作高效。
- 阴谋者之间必须互不认识。
- 两个组都不能为空,即至少要有一名阴谋者,且支援组中至少要有一人。
Byteasar 想知道将选定的人员划分为这两组的方法有多少种。最重要的是,这种划分是否可行。由于他完全不知道如何处理这个问题,他请求你的帮助。
输入格式
标准输入的第一行包含一个整数 $n$ ($2 \le n \le 5\,000$),表示参与组建抵抗运动的人数。这些人编号为 1 到 $n$(为了保密!)。接下来的 $n$ 行描述了组内人员的相识情况。其中第 $i$ 行描述了编号为 $i$ 的人的相识情况,由一系列以空格分隔的整数组成。第一个数字 $k_{i}$ ($0 \le k_{i} \le n-1$) 表示第 $i$ 个人的相识人数。该行接下来的 $k_{i}$ 个整数 $a_{i,1}, a_{i,2}, \dots, a_{i,k_{i}}$ 是 $i$ 的相识对象的编号。数字 $a_{ij}$ 按递增顺序给出,且满足 $1 \le a_{ij} \le n$,$a_{ij} \neq i$。你可以假设如果 $x$ 出现在 $a_{i}$ 的序列中(即在 $i$ 的相识对象中),那么 $i$ 也一定会出现在 $a_{x}$ 的序列中(即在 $x$ 的相识对象中)。
输出格式
在标准输出的第一行(也是唯一一行)中,你的程序应该打印一个整数:将选定人员划分为阴谋者和支援组的方法数。如果没有满足上述条件的划分,那么 0 显然是正确答案。
样例
输入 1
4 2 2 3 2 1 3 3 1 2 4 1 3
输出 1
3
将这些人划分为两组的方法有三种。阴谋者小组可以由编号为 1 和 4 的人组成,或者由编号为 2 和 4 的人组成,或者仅由编号为 4 的人组成。