#31106. 原子(atom)

原子(atom)

题目背景

根据玻尔理论,电子只能在特定的轨道上运动,因此,原子的能量也只能取一系列特定的值,这些量子化的能量值叫做能级,能量最低的状态叫做基态,其他的状态叫做激发态

小 Z 最近受到了高中物理的毒打,他知道,处于第 nn 能级(基态为第一能级)的原子向下跃迁时理论上能辐射出 (n2)\binom{n}{2} 种不同能量的光子。而同时身为 OIer 的他在某一天突发奇想:如果一个原子可以多次跃迁,那么最少需要总共多少个原子,才能保证所有 (n2)\binom{n}{2} 种能级对都被跃迁过至少一次呢?

小 Z 将问题发给了 YeahPotato 和你,你需要在 YeahPotato 口胡完之前写出代码。

题目描述

给定 nn。你需要准备尽量少的原子,它们初始都处于第 nn 能级。对于一个第 ii 能级的原子,你可以控制它向第 [1,i)Z[1,i) \cap \mathbb Z 中的某个能级跃迁。原子可以跃迁任意次,且最终不一定要到达基态。

要求每种形如“从第 ii 能级向第 jj 能级跃迁”(1j<in1\le j \lt i\le n)的情况都至少出现一次。

输入格式

一行一个正整数 nn

输出格式

第一行输出一个整数 mm,表示最少需要几个原子。

接下来 mm 行每行表示一个原子的操控过程,第一个整数 cc 表示当前原子的跃迁次数,接下来 cc正整数 d1cd_{1\cdots c} 依次表示每次跃迁降低的能级数,你需要保证 di<n\sum d_i \lt n。例如,n=8,c=3,d=[2,3,1]n=8,c=3,d=[2,3,1],那么这个原子的能级变化为 86328\rightarrow 6\rightarrow 3\rightarrow 2

你需要保证 c6×106\sum c\le 6\times 10^6。可以证明存在一组方案满足该条件且使用最少的原子。

3
2
2 1 1
1 2
4
4
3 1 1 1
2 2 1
2 1 2
1 3

附加样例

1.in
1.out
2.in
2.out

数据范围与提示

在一个测试点中,如果你正确输出了最少的原子数,可以得到该测试点 20%20\% 的分数。如果你正确输出了最少的原子数和任意一个满足所有条件的方案,可以得到该测试点 100%100\% 的分数。否则无法得分。

注意,即使你只希望获得 20%20\% 的分数,也需要输出 mm 行合法的方案,也就是说,当且仅当你输出的方案不能覆盖所有 (n2)\binom{n}{2} 种情况,但满足其他所有格式条件,你才能获得 20%20\% 的分数。一个推荐的方式是输出 mm00

测试点编号 nn\le
141\sim 4 88
585\sim 8 2525
9149\sim 14 100100
152015\sim 20 20002000

对于 100%100\% 的数据,2n20002\le n\le 2000

提示

所有测试点的输入 nn 互不相同。

本题输出量较大,请使用较快的输出方式。