#2023. 超级汉诺塔

超级汉诺塔

题目描述

三个柱子编号分别为1\red{1}2\red{2}3\red{3,}初始时n\red{n}个盘子按照编号上小下大的次序放在第一个柱子上,需要将所有的盘子由柱子1\red{1}移至柱子3\red{3}。限制是:第一、任何时候,只 能编号小的盘子放在大的盘子上面;第二、只能在柱子1\red{1}2\red{2}和柱子2\red{2}3\red{3}间移动,不能直接在柱子1\red{1}3\red{3}间移动。现在有两个人A\red{A}B\red{B}同时移动柱子 ,A\red{A}只负责在柱子1\red{1}2\red{2}之间移动盘子,B\red{B}只负责在柱子2\red{2}3\red{3}之间移动盘子,每人每秒最多只能移动一个盘子,也就是说可以在A\red{A}进行柱子1\red{1}2\red{2}间的移动的同时(即同一秒内)由B\red{B}进行柱子2\red{2}3\red{3}间的移动,当然也可以有一个人闲着。要求输出移动的最短时间以及最优方案中从第i\red{i}步开始的k\red{k}个具体步骤。

输入格式

第一行有一个整数和一个回车/\red{/}换行符,代表共有n\red{n}个盘子放在第一根柱子上。

第二行有两个整数,分别是i\red{i}k\red{k}。表示你需要输出从第i\red{i}个步骤开始的k\red{k}个步骤。

输出格式

第一行输出一个整数,表示需要的总时间(秒数)。

第二行起的k\red{k}行,分别表示从第i\red{i}秒开始的k\red{k}秒的行动,每行表示一秒,用四个整数表示:前两个整数表示左边的那个人将几号盘子移到了几号柱子上,后两个整数表示右边的那个人将几号盘子移到了几号柱子上,如果某人在这一秒没有行动,则相应的整数为00\red{0 0}。输出以换行/\red{/}回车符结尾。

样例

输入样例

2
1 6

输出样例

6
1 2 0 0
2 2 1 3
0 0 1 2
1 1 2 3
1 2 0 0
0 0 1 3

提示

n<=15\red{n<=15}

k<=100\red{k<=100}