328. 习题 4.10 汉诺塔

Easy递归函数

时间限制:2000 ms

内存限制:512 MiB

题面

“传说大梵天在创造世界时做了三根金刚石柱子,在一根柱子上从下往上从大到小摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘......”

一觉醒来,KiloKilo 竞穿越到了古印度。

KiloKilo 面前同样是三根柱子。但和课上听到的传说不一样的是,这些柱子不是金刚石做的,圆盘也不是黄金做的。这时,一个声音从天边传来:“要想回到原来的世界,你就得把圆盘从下面开始...”

“我知道,”KiloKilo 打断了那个声音,“从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。”

看着面前 A,B,CA, B, C 三根柱子,KiloKilo 陷入了沉思。现在,nn 个圆盘从下往上,从小到大摞在 AA 上。

KiloKilo 想要尽可能早地回家,你能否给 KiloKilo 一个方案,以最少的移动次数将 nn 个圆盘从 AA 挪到 BB

输入格式

一行一个整数 nn (1n201 \le n \le 20) 。

输出格式

第一行一个整数 kk,代表最少需要的移动次数。

接下来 kk 行中,第 ii 行两个大写字母 Xi,YiX_i, Y_i,代表第 ii 步将 XiX_i 柱顶端的圆盘移到 YiY_i 柱上。

样例

输入

1

输出

1
A B

输入

2

输出

3
A C
A B
C B