#T2014. 汉诺塔(Tower of Hanoi)

汉诺塔(Tower of Hanoi)

汉诺塔 (Task 2165)

描述

汉诺塔游戏由三根柱子(左、中、右)和 nn 个大小不同的圆盘组成。初始时,左柱上叠放着所有圆盘,从上到下尺寸递增。 目标是借助中间柱子,把所有圆盘移动到右柱上。每步操作可以把某根柱子最上面的一个圆盘移到另一根柱子上。此外,不允许把较大的圆盘放在较小的圆盘之上。 你的任务是找出一个使操作步数最少的方案。

输入

输入仅一行,包含一个整数 nn:圆盘的数量。

输出

先打印一个整数 kk:最少的操作步数。 随后打印 kk 行,描述每一步移动。每行包含两个整数 aabb:把圆盘从柱子 aa 移到柱子 bb

约束

  • 1n161 \le n \le 16

样例

输入:
2
输出:
3
1 2
1 3
2 3