// 我不行了 ,瞎写的代码我自己都没看懂,居然就这么过了。。。。。。
// 将每次k大坨从src位置移动到dest位置,中间经过mid的过程分为3个步骤
// 第一步,将k-1大坨从src移动到mid
// 第二步,将最底下那个垫片移动到dest
// 第三步,将k-1大坨从mid移动到dest
// 注意递归的含义是将to_move个垫片进行移动,如果数量为0,那么自然就应该终止递归了
// recursion是移动一大坨这个动作
// cout << src <<' '<<dest<<'\n';是移动一小片
// 再次recursion又把一大坨移动到了dest
#include <iostream>
using namespace std;
void recursion(int n,int to_move,char src,char dest,char mid)
{
if (to_move == 0)
return ;
// 首先理解你的函数的用意
// 这里的目标是要把一部分从src搬到mid
// 把最下面一个垫片从src搬到dest
// 然后再把mid上的搬回到dest上
recursion(n,to_move-1,src,mid,dest);
cout<<src<<' '<<dest<<'\n';
recursion(n,to_move-1,mid,dest,src);
}
int main() {
int n;
cin>>n;
recursion(n,n,'A','C','B');
return 0;
}