//汉诺塔
#include<stdio.h>
#include<stdlib.h>
void work(int n,int s,int t) //参数如上面所说
{
char x='A'+s-1; //方便输出字母
char y='A'+t-1;
if(n == 1) //结束条件
{
printf("%d from %c to %c\n",n,x,y);
return ;
}
int v=6-s-t;//即非起点与终点的塔
work(n-1,s,v); //递归结构 向缓冲区挪动
printf("%d from %c to %c\n",n,x,y);
work(n-1,v,t); //缓冲区挪回
}
/* ……
将最大的盘挪到终点->倒数第二及前面挪到缓冲区,以此类推
……
*/
int main(void)
{
int i,j;
int x,y;
int sum=1;
int n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum<<1;
}
sum--;//2的n次方-1
printf("%d\n",sum);
work(n,1,3);//A 为1,B 为2,C为3
return 0;
}