在 3025 年,RUN 正在举办第 1015 届 KAIST ICPC 模拟赛!为了给 $N$ 位参赛者带来全新的震撼(impact),主办方为他们准备了共 $N$ 种不同口味的布丁。由于每位参赛者都有自己独特的口味偏好,因此每个人想要的口味都是不同的,且对应主办方准备的 $N$ 种口味之一。对于这 $N$ 种口味中的每一种,主办方都恰好准备了 $2$ 个布丁,因此总共有 $2N$ 个布丁。
今年的主办方希望尽可能美观地展示这些布丁。为此,他们准备了共 $2$ 个特殊的容器来装布丁。每个容器的设计都可以将布丁分层堆叠,且每个容器最多可容纳 $N + 1$ 个布丁。主办方希望第一个容器中的布丁口味从下到上依次为 $1, 2, \dots, N$,第二个容器中的布丁口味从下到上同样依次为 $1, 2, \dots, N$。
主办方要求 AI 来完成这个任务,但 AI 忽略了口味条件,随机地将这 $2N$ 个布丁分配到了这两个容器中!因此,主办方希望通过以下操作将布丁调整为期望的状态。
- 选择一个包含至少一个布丁的容器 $A$,以及一个能够容纳至少一个额外布丁的容器 $B$。注意,即使 $A = B$,$B$ 也必须有空间容纳至少一个额外的布丁。
- 将容器 $A$ 最底部的布丁移动到容器 $B$ 的最顶部。在此之后,容器 $A$ 中原本从底部起第 $i$ 个布丁将变成从底部起第 $i - 1$ 个布丁。
工作人员的时间有限,因此他们希望在不超过 $200\,000$ 次操作内,将所有布丁按口味放入容器中。请编写一个程序,输出一种执行操作的方法,以帮助工作人员。
输入格式
第一行包含一个正整数 $N$。
接下来的两行包含每个容器中布丁的口味,用空格分隔。第 $i$ 行的第一个数字 $n_i$ 表示第 $i$ 个容器中的布丁数量。在第 $i$ 行的第一个数字之后,给出 $n_i$ 个整数。其中第 $j$ 个数字表示第 $i$ 个容器中从底部起第 $j$ 个布丁的口味。
输出格式
第一行输出要执行的操作次数 $M$。
接下来的 $M$ 行,每行输出两个整数 $A$ 和 $B$。这表示执行一次操作:将第 $A$ 个容器底部的布丁移动到第 $B$ 个容器的顶部。必须满足 $1 \le A, B \le 2$。容器 $A$ 必须至少包含一个布丁,且容器 $B$ 必须未装满布丁。
在所有操作完成后,每个容器中的布丁必须满足其口味从底部起依次为 $1, 2, \dots, N$。
子任务
- $1 \le N \le 100$
样例
输入样例 1
1 2 1 1 0
输出样例 1
9 1 2 1 2 2 1 2 1 1 2 1 2 2 1 1 2 2 1
输入样例 2
2 2 2 1 2 2 1
输出样例 2
6 1 1 2 2 1 2 2 1 1 2 2 1
说明
不需要使操作次数最少。