我是超级判官
#pragma GCC optimize(3)
#pragma GCC optimize("-ffast-math","inline","Ofast")
#pragma GCC target("abm,avx,mmx,popcnt,sse,sse2,sse3,ssse3,sse4")
#include<bits/stdc++.h>
#include<unordered_map>
#define quickcin() ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define endl "\n"
#define int long long
using namespace std;
const int N = 1e2 + 10;
int q[N];
int r[N];
void dfs(int u) {
if (u == 11) {
if (q[5] == 3) r[2] = 1;
if (q[5] == 4) r[2] = 2;
if (q[5] == 1) r[2] = 3;
if (q[5] == 2) r[2] = 4;
if (q[3] != q[2] && q[3] != q[4] && q[3] != q[6]) r[3] = 1;
else if (q[3] != q[2] && q[2] != q[4] && q[2] != q[6]) r[3] = 3;
else if (q[4] != q[2] && q[3] != q[4] && q[4] != q[6]) r[3] = 4;
else if (q[3] != q[6] && q[6] != q[4] && q[6] != q[2]) r[3] = 2;
else return;
if (q[1] == q[5]) r[4] = 1;
else if (q[2] == q[7]) r[4] = 2;
else if (q[1] == q[9]) r[4] = 3;
else if (q[6] == q[10]) r[4] = 4;
else return;
if (q[5] == q[8]) r[5] = 1;
else if (q[5] == q[4]) r[5] = 2;
else if (q[5] == q[9]) r[5] = 3;
else if (q[5] == q[7]) r[5] = 4;
else return;
if (q[2] == q[4] && q[4] == q[8]) r[6] = 1;
else if (q[1] == q[6] && q[6] == q[8]) r[6] = 2;
else if (q[3] == q[10] && q[10] == q[8]) r[6] = 3;
else if (q[5] == q[9] && q[9] == q[8]) r[6] = 4;
else return;
int cnts[10] = { 0 };
for (int i = 1; i <= 10; i++) {
cnts[q[i]]++;
}
int minn = 1e18, maxn = 0, idx = 0, idx2 = 0;
for (int i = 1; i <= 4; i++) {
minn = min(minn, cnts[i]);
maxn = max(maxn, cnts[i]);
}
int judge = 0;
if (q[1] == q[6]) judge = 1;
if (judge) {
if (q[5] != q[6]) r[9] = 1;
else if (q[5] != q[10]) r[9] = 2;
else if (q[5] != q[2]) r[9] = 3;
else if (q[5] != q[9]) r[9] = 4;
else return;
}
else {
if (q[5] == q[6]) r[9] = 1;
else if (q[5] == q[10]) r[9] = 2;
else if (q[5] == q[2]) r[9] = 3;
else if (q[5] == q[9]) r[9] = 4;
else return;
}
int dis = maxn - minn;
if (dis == 2) r[10] = 1;
if (dis == 4) r[10] = 2;
if (dis == 3) r[10] = 3;
if (dis == 1) r[10] = 4;
int f = 1;
for (int i = 2; i <= 10; i++) {
if (i == 8) continue;
if (i == 7) {
int flag = 0;
for (int j = 1; j <= 4; j++) {
if (minn == cnts[j] && j == q[7]) {
flag = 1;
break;
}
}
if (flag) continue;
else {
f = 0;
break;
}
}
if (q[i] != r[i]) {
f = 0;
break;
}
}
if (f) {
for (int i = 1; i <= 10; i++) {
cout << char(q[i] - 1 + 'A');
}
}
return;
}
for (int i = 1; i <= 4; i++) {
q[u] = i;
dfs(u + 1);
}
}
void solve() {
dfs(1);
}
signed main() {
int _ = 1;
//cin >> _;
while (_--) {
solve();
}
}