#P6037. [nerc 2022]Easy Assembly

[nerc 2022]Easy Assembly

背景

艾玛喜欢玩积木。她有几块相同大小的立方体积木,每块上面都写有不同的整数。她通过将这些积木垂直堆叠来搭建塔楼。

她的游戏配置是用积木搭建的一组塔楼。艾玛可以对这些塔楼配置进行两种操作:

  • 拆分:对一个包含多个积木的塔,从塔顶取出任意数量的积木并将它们移动到一个新的塔中,保持其顺序,这样旧塔的顶层积木就成为新塔的顶层积木。此操作会使塔的数量增加1。
  • 合并:将一个塔的积木按顺序放在另一个塔的顶端,从而合并两个塔。此操作会使塔的数量减少1。

艾玛希望将所有积木堆叠成一个单一的塔,使得所有积木按从上到下的顺序排列,顶部的积木是最小数字,底部的积木是最大数字。艾玛希望尽量减少拆分和合并操作的次数。你的任务是找到她需要进行的最小操作次数,并输出需要的拆分和合并次数。

描述

输入

输入的第一行包含一个整数nn (1n10000)(1 \leq n \leq 10000),表示初始配置中塔的数量。接下来的nn行描述各塔。第ii行以整数kik_i开始,表示塔中的积木数量(ki1;ki10000)(k_i \geq 1; \sum k_i \leq 10000),然后是kik_i个整数bi,jb_{i,j} (1bi,j109)(1 \leq b_{i,j} \leq 10^9),表示第ii个塔从上到下的积木编号。所有输入的积木编号均不同。

输出

输出一行包含两个整数sscc,表示艾玛为了得到一个按编号排序的积木塔需要的拆分和合并操作的次数,使得总操作次数最少。

示例

2
3 3 5 8
2 9 2
1 2