我是超级判官

#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();
	}
}