#include <bits/stdc++.h>
using namespace std;
const int N=4e4+5;
int n,a[N],b[N],c[N],zb,za,ta,tb=1,cnt=0,maxn1,maxn2,now=1;
char ans[1000005][3];
int check()
{
int id=-1,maxn=0;
for(int i=1;i<ta;i++)
{
if(maxn<a[i])
{
id=1;
maxn=a[i];
}
}
for(int i=1;i<tb;i++)
{
if(maxn<b[i])
{
id=2;
maxn=b[i];
}
}
return id;
}
void dfs()
{
if(now>n)
return;
if(check()==1)
{
maxn1=maxn2;
now++;
maxn2=c[now];
while(a[ta-1]!=maxn1 && ta>1)
{
ans[++cnt][1]='A';
ans[cnt][2]='B';
b[tb++]=a[--ta];
}
--ta;
ans[++cnt][1]='A';
ans[cnt][2]='C';
}
if(check()==2)
{
maxn1=maxn2;
now++;
maxn2=c[now];
while(b[tb-1]!=maxn1)
{
ans[++cnt][1]='B';
ans[cnt][2]='A';
a[ta++]=b[--tb];
}
--tb;
ans[++cnt][1]='B';
ans[cnt][2]='C';
}
if(check()==-1)
return;
dfs();
}
bool cmp(int x,int y)
{
return x>y;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&c[i]);
a[n-i+1]=c[i];
maxn1=max(maxn1,c[i]);
}
sort(c+1,c+1+n,cmp);
maxn2=c[1];
za=1;
ta=n+1;
dfs();
cout<<cnt<<endl;
for(int i=1;i<=cnt;i++)
cout<<ans[i][1]<<" "<<ans[i][2]<<endl;
return 0;
}