假设无人机表演中有 $n$ 个场景。每个场景的调色板可以用一组整数来描述,这些整数标识了不同的颜色,我们将调色板中最大的整数称为该场景的“主色”。
无人机操作员打算重新排列这些场景的顺序。在重新排列后,对于每一对相邻的场景,如果前一个场景的主色是后一个场景调色板中包含的颜色之一,则会产生一次转换。你能否帮助构造一种场景排列,使得转换次数最大化?
更正式地说,令 $S_i$ 为描述第 $i$ 个场景调色板的整数集合。你需要构造一个排列 $p_1, p_2, \dots, p_n$,使得 $\sum_{i=1}^{n-1} [\max\{S_{p_i}\} \in S_{p_{i+1}}]$ 在所有长度为 $n$ 的排列中最大,其中当 $\max\{S_{p_i}\} \in S_{p_{i+1}}$ 时,$[\max\{S_{p_i}\} \in S_{p_{i+1}}]$ 为 $1$,否则为 $0$。
回想一下,长度为 $n$ 的排列是一个包含从 $1$ 到 $n$ 的每个整数恰好一次的序列。
输入格式
第一行包含一个整数 $n$ ($2 \le n \le 10^5$),表示无人机表演中的场景数量。
在接下来的 $n$ 行中,第 $i$ 行首先给出一个整数 $m_i$ ($m_i \ge 1$),表示第 $i$ 个场景调色板中的颜色数量。随后是 $m_i$ 个不同的整数 $a_{i,1}, a_{i,2}, \dots, a_{i,m_i}$ ($0 \le a_{i,j} \le 10^9$),每个整数标识调色板中的一种颜色。
保证所有 $i = 1, 2, \dots, n$ 的 $m_i$ 之和不超过 $2 \times 10^5$。
输出格式
第一行输出一个整数,表示所有场景排列中可达到的最大转换次数。
第二行输出一个排列 $p_1, p_2, \dots, p_n$,表示第 $p_i$ 个场景在按时间顺序排列的第 $i$ 个时间段播放。你的构造应使转换次数最大化。如果存在多种使转换次数最大化的场景排列,你可以选择其中任意一种输出其对应的排列。
样例
输入 1
5 3 1 2 4 2 2 3 2 1 3 1 2 2 4 5
输出 1
3 4 2 3 1 5
输入 2
3 1 1 1 2 1 3
输出 2
0 1 2 3
说明
在第一个样例中,场景 4 到场景 2,场景 2 到场景 3,场景 1 到场景 5 都可以贡献一次转换。
在第二个样例中,没有场景共享公共颜色。因此,长度为 3 的任何排列都是可接受的。