Bajtyna 最近在一个可疑的网站上买了一个玩具。她本以为邮寄过来的会是她熟知的“汉诺塔”(Tower of Hanoi)谜题,结果在邮箱里收到的却是“Hanoj 塔”。
Hanoj 塔由 $m$ 个栈组成,上面分布着 $n$ 个两两不同的木块,木块用 $1$ 到 $n$ 的整数进行编号。在游戏开始时以及游戏过程中的任意时刻,每个栈中的木块编号从栈顶到栈底必须是严格单调递增的。在一次操作中,玩家可以从任意栈的栈顶取出一个木块,并将其放入任意栈的栈底。
Bajtyna 现在想知道,最少需要多少次操作才能将所有木块移动到同一个栈中。请帮助她解决这个谜题。
输入格式
输入的第一行包含两个整数 $n$ 和 $m$($2 \le m \le n \le 10^6$),分别表示木块的数量和栈的数量。栈从 $1$ 到 $m$ 进行编号。
接下来的 $m$ 行包含对各个栈的描述。第 $i$ 个栈(对于 $1 \le i \le m$)的描述由整数 $k_i, v_{i,1}, \dots, v_{i,k_i}$($0 \le k_i \le n$,$1 \le v_{i,1} < v_{i,2} < \dots < v_{i,k_i} \le n$)组成,其中 $k_i$ 是第 $i$ 个栈中的木块数量,而 $v_{i,1}, \dots, v_{i,k_i}$ 是这些木块按从栈顶到栈底的顺序排列的编号。
所有给出的木块编号在 $1$ 到 $n$ 之间且两两不同,每个木块都恰好位于某一个栈中(即 $k_1 + \dots + k_m = n$)。
输出格式
输出的第一行应包含一个整数 $h$,表示解决该谜题所需的最少操作次数。
接下来的 $h$ 行应包含对后续操作的描述。第 $i$ 次操作(对于 $1 \le i \le h$)的描述应由两个整数 $a_i, b_i$($1 \le a_i, b_i \le m$)组成,表示将栈 $a_i$ 顶部的元素移动到栈 $b_i$ 的底部。
如果无法解决该谜题,则只需输出一行,包含 $-1$。
如果存在多种可能的解决方案,输出其中任意一种即可。
样例
输入样例 1
3 3 1 2 2 1 3 0
输出样例 1
3 2 3 1 3 2 3
输入样例 2
7 3 4 1 2 5 7 1 4 2 3 6
输出样例 2
-1
说明
在第一个样例中,我们首先将第二个栈顶部的木块 $1$ 移动到空的第三个栈中。接着,我们将第一个栈顶部的木块 $2$ 移动到第三个栈的底部。最后,我们将第二个栈顶部的木块 $3$ 移动到第三个栈的底部。这样,在游戏的任何时刻,每个栈中的木块编号都是升序排列的,且在三次操作后,所有木块都位于第三个栈中。
在第二个样例中,无法解决该谜题。
样例测试点:
- 测试点 0a 和 0b 即为上述样例。此外:
- 0c:$10$ 个木块和两个栈,其中一个为空。
- 0d:$1000$ 个木块和三个栈,其中一个为空,另外两个分别包含偶数和奇数编号的木块。
- 0e:$10^6$ 个栈和 $10^6$ 个木块,每个栈上各有一个。
子任务
测试点分为以下子任务。每个子任务的测试由一个或多个独立的测试组组成。
| 子任务 | 数据范围 | 分值 |
|---|---|---|
| 1 | $n \le 6$ | 15 |
| 2 | 对于某个 $i \in \{1, \dots, m\}$,$k_i = 0$ | 27 |
| 3 | $n \le 1000$ | 22 |
| 4 | $m = 3$ | 18 |
| 5 | 无附加限制 | 18 |
如果你的输出中只有第一行(即操作次数 $h$)是正确的,你将获得该测试点 50% 的分数。你不需要输出后续的行即可获得这部分分数。