Emma 喜欢玩积木。她有一些大小相同、上面写有不同整数的立方体积木。她将这些积木垂直堆叠起来,组装成塔。
游戏的一种配置是她用积木组装的一组塔。Emma 可以对塔的配置执行两种操作:
- 拆分 (Split):将任何包含多于一个积木的塔拆分,方法是从塔顶取走任意数量的积木,并将它们移动到一个新的塔中,同时保持它们的顺序,使得原塔的顶部积木成为新塔的顶部积木。此操作的结果是塔的数量增加 1。
- 合并 (Combine):将任意两座塔合并,方法是将一座塔的积木按原顺序移动到另一座塔的顶部。此操作的结果是塔的数量减少 1。
Emma 想要将所有积木堆叠成一座塔,使得所有积木按数字从小到大排序——从顶部积木数字最小到底部积木数字最大。Emma 希望尽可能减少拆分和合并操作的次数。你的任务是找到她必须执行的最少操作次数,并输出所需的拆分次数和合并次数。
输入格式
输入文件的第一行包含一个整数 $n$ ($1 \le n \le 10\,000$),表示初始配置中塔的数量。接下来的 $n$ 行描述这些塔。每座塔 $i$ 由一行描述,该行以数字 $k_i$ 开头 ($k_i \ge 1$; $\sum_{i=1}^n k_i \le 10\,000$),表示塔中积木的数量,随后是 $k_i$ 个数字 $b_{i,j}$ ($1 \le b_{i,j} \le 10^9$),表示塔中从上到下积木上的数字。输入中列出的所有积木数字各不相同。
输出格式
输出一行,包含两个整数 $s$ 和 $c$,分别表示 Emma 为了得到一座积木按数字排序的单塔所应执行的拆分操作次数和合并操作次数,使得总操作次数最小化。
样例
输入 1
2 3 3 5 8 2 9 2
输出 1
1 2
说明
该样例需要以下操作(1 次拆分和 2 次合并)。
初始状态、拆分最后一座塔、将第 2 座塔合并到第 1 座塔上、将第 1 座塔合并到第 2 座塔上