Bajtyna 最近在一个可疑的网站上买了一个玩具。她没有收到著名的汉诺塔谜题,而是在邮箱里发现了 Hanoj 塔。
Hanoj 塔由 个堆组成,上面分布着 个两两不同的积木,编号为从 到 的整数。在游戏开始时以及游戏的任何时刻,每个堆上的积木编号必须按照从堆顶到堆底递增的顺序排列。
在一步移动中,玩家可以从任意堆取走顶部的积木,并将其放置在任意堆的底部。
Bajtyna 现在想知道,要将所有积木放置在同一个堆上,最少需要多少步移动。帮她解决这个谜题。
输入的第一行包含两个整数 和 ( ),分别表示积木的数量和堆的数量。堆用从 到 的整数编号。
接下来的 行包含堆的描述。
第 个堆(对于 )的描述由数字 ( )组成,其中 是第 个堆上的积木数量,而 是这些积木的编号,按从堆顶到堆底的顺序给出。
所有给出的积木具有范围从 到 的两两不同的编号,每个这样的积木都位于某个堆上(即 )。
输出的第一行应打印一个整数 ,表示解决谜题所需的最少移动次数。接下来的 行应包含后续移动的描述。
第 步移动(对于 )的描述应由两个整数 ( )组成,表示将堆 的顶部元素移动到堆 的底部。
如果无法解决谜题,则应只打印包含 的一行。
如果有多种可能的解决方案,只需打印其中任意一种。
3 3 1 2 2 1 3 0
3 2 3 1 3 2 3
7 3 4 1 2 5 7 1 4 2 3 6
-1
样例 中,首先我们将积木 1 从第二个堆的顶部移动到空的第三个堆。接下来,我们将积木 2 从第一个堆移动到第三个堆的底部。最后,我们将积木 3 从第二个堆移动到第三个堆的底部。这样,在游戏的任何时刻,每个堆上的积木编号都是递增排序的,并且在三次移动后,所有积木都位于第三个堆上。
样例 中,解决谜题是不可能的。
可以在附件中获得大样例。
样例 和 是题面中展示的样例。此外:
本题采用捆绑测试。
如果你的答案只有第一行是正确的,你的解决方案将获得该测试 的分数。你不需要打印后续行即可获得这些分数。