在漫长而劳累的编程工作后,Stepan 决定喝下午茶。程序员们喜欢各种各样的茶:红茶(kocha)、煎茶(sencha)、抹茶(matcha)、摩卡(mocha)等等。Stepan 走进厨房,发现抽屉里所有的茶包都混在了一起。真是太乱了!Stepan 喜欢整洁,他希望将茶包按平时的顺序排列好。
抽屉里有 $N$ 包茶,排成 $K$ 行。在每一行中,茶包排成一列,从离 Stepan 最近的茶包一直延伸到最远的茶包。但是抽屉非常矮,你只能拿走每一行中最近的那包茶。因此,这里唯一可行的操作是从第 $i$ 行拿走最近的茶包,并将其放入第 $j$ 行,使其成为第 $j$ 行中最近的茶包。用编程术语来说,每一行都是一个栈,或者说“后进先出”(LIFO)结构。
每包茶都标有一个整数,表示茶的类型。Stepan 喜欢满足以下条件的排列:
- 每一行中的茶包数量相同,
- 对于任意 $i < j$,第 $i$ 行中茶包的类型编号小于或等于第 $j$ 行中茶包的类型编号,
- 在每一行中,茶包按类型编号从最近到最远的顺序升序排列。
请设计一个不超过 $13 \cdot N$ 次移动茶包操作的方案,使得所有茶包都按照 Stepan 的喜好摆放。你不需要最小化操作次数。
输入格式
输入的第一行包含两个整数 $N$ 和 $K$ —— 茶包的总数和行数($1 \le N \le 10^5$,$11 \le K \le 111$)。
接下来有 $K$ 行,其中第 $r$ 行定义了第 $r$ 行的茶包。对于每一行,首先给出一个整数 $T_r$,表示该行中的茶包数量,随后给出 $T_r$ 个整数 —— 该行中各茶包的类型($0 \le T_r \le N$)。每一行中的茶包按从最近到最远的顺序给出。
保证所有 $T_r$ 的总和等于 $N$,且 $N$ 可以被 $K$ 整除。表示茶包类型的整数绝对值不超过 $10^9$。
输出格式
在输出的第一行中,输出一个整数 $M$ —— 你的方案中的操作次数($0 \le M \le 13 \cdot N$)。
在接下来的 $M$ 行中,按执行顺序输出每次操作。对于每次操作,输出两个空格分隔的整数:$i$ —— Stepan 必须从中取出最近茶包的行号,以及 $j$ —— 他必须将其放入的行号($1 \le i, j \le K$)。
样例
输入样例 1
33 11 3 -1 1 1 3 1 1 1 3 1 2 2 3 3 3 3 3 3 4 4 3 5 7 7 3 7 7 7 3 7 8 8 3 8 9 9 3 9 9 9 3 9 9 9
输出样例 1
0
输入样例 2
33 11 3 -1 1 1 3 1 1 1 3 1 2 2 0 5 3 4 3 3 4 4 5 7 7 3 3 7 7 7 3 7 8 8 3 8 9 9 3 9 9 9 3 9 9 9
输出样例 2
13 6 7 6 7 6 7 6 4 7 6 7 6 7 6 5 4 5 11 5 4 5 4 11 5 4 5
说明
在第一个样例中,所有的茶包已经按照 Stepan 喜欢的顺序摆放好了,因此不需要进行任何操作。
在第二个样例中,第 4 行是空的,本应放在那里的茶包被放到了第 5 行和第 6 行。方案中的前 7 次操作从第 6 行中取出类型为 3 的茶包。注意,这个茶包是最远的,所以为了取出它,必须先取出前面的 3 个茶包。这些茶包被以相反的顺序放入第 7 行;在移出所需的类型为 3 的茶包后,它们又被按正确的顺序放回。剩下的 6 次操作将 2 个类型为 3 的茶包从第 5 行移动到第 4 行。这使得该行中一个类型为 4 的茶包被移到了更深(更远)的位置。