Problem1823--汉诺塔

1823: 汉诺塔

[Creator : ]
Time Limit : 1.000 sec  Memory Limit : 128 MB

Description

现有三根柱子 a, b, c 以及 n 个圆盘,半径分别为 1n 
初始 n 个圆盘堆叠在柱子 a 上,从顶层到底层圆盘半径递增。
每次操作可以将其中一根柱子顶层的圆盘移动到另一根柱子的顶层,但是不能将半径大的圆盘堆叠在半径小的圆盘之上。
你需要通过数次这样的操作,将位于柱子 a 上的 n 个圆盘全部移动到柱子 c 上,并使得操作次数最少。

Input

多组数据。 
每组输入一行,包含一个正整数 n(1 ≤ n ≤ 20) 
文件以EOF结束。

Output

每组输出若干行,第一行包含一个整数 m,表示需要进行的最少操作次数。 
接下来 m 行,每行包含一个操作,按操作顺序从上往下排列。 
每个操作包含一个正整数 k 以及两个字符 xy,表示此次操作将圆盘 k 从柱子 x 移动到柱子 y,输出形式为 k:from x to y

Sample Input Copy

1
2
3
4

Sample Output Copy

1
1:from a to c
3
1:from a to b
2:from a to c
1:from b to c
7
1:from a to c
2:from a to b
1:from c to b
3:from a to c
1:from b to a
2:from b to c
1:from a to c
15
1:from a to b
2:from a to c
1:from b to c
3:from a to b
1:from c to a
2:from c to b
1:from a to b
4:from a to c
1:from b to c
2:from b to a
1:from c to a
3:from b to c
1:from a to b
2:from a to c
1:from b to c

Source/Category