现在20分。。。
```cpp
#include<bits/stdc++.h>
#define pc putchar
using namespace std;
int n,will[30],deep,ans1[100],ans2[100],ans3[100],st[4][30],cnt[30];
char str[30];
void dfs(int now){
if(cnt[3]&&st[3][cnt[3]]!=cnt[3]) return;
if(deep-now<cnt[0]+cnt[1]+cnt[2]) return;
if(now==deep&&cnt[3]==n){
for(int i=0;i<now;i++) printf("%c %c %c\n",ans1[i]+96,ans2[i]+65,ans3[i]+65);
exit(0);
}
if(now>=deep) return;
for(int i=0;i<3;i++){
if(!cnt[i]) continue;
for(int j=i+1;j<4;j++){
int t=st[i][cnt[i]--];
ans1[now]=t;ans2[now]=i;ans3[now]=j;
st[j][++cnt[j]]=t;
dfs(now+1);
cnt[j]--;
st[i][++cnt[i]]=t;
}
}
}
int main(){
scanf("%d%s",&n,str+1);
for(int i=n;i>=1;i--) st[0][++cnt[0]]=str[i]-96;
for(deep=n;deep<=3*n;deep++) dfs(0);
printf("NO");
return 0;
}
```
by YuRuochen @ 2022-11-04 22:08:00