#include<iostream>
using namespace std;
int t=0;
int main()
{
char a='A',b='B',c='C';
int n;
void move(int ,char ,char ,char );
cin>>n;
move(n,a,b,c); //进行递归
cout<<t<<endl;
return 0;
}
void move(int n,char a,char b,char c)
{
t++;
if(n==1)
{
cout<<a<<"——>"<<c<<endl; //递归终止条件
}
else
{
move(n-1,a,c,b); //将上面的n-1个视为整体,从a到b,视c为目标
cout<<a<<"——>"<<c<<endl; //记录最大的一个盘子移动到c的记录,从a移动到c
move(n-1,b,a,c); //将视为整体的n-1个盘子从b移动到c
}
}