#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
const int INF = 1e9 + 5;
int n;
int a[MAXN];
int b[MAXN];
int l[MAXN][2];
int r[MAXN][2];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> n;
for (int i = 1; i <= 2 * n; i++)
{
cin >> a[i];
}
for (int i = 1; i <= 2 * n; i++)
{
cin >> b[i];
}
a[0] = -INF;
b[0] = -INF;
for (int i = 1; i <= 2 * n; i++)
{
l[i][0] = l[i][1] = INF;
r[i][0] = r[i][1] = -INF;
if (a[i - 1] <= a[i])
{
l[i][0] = min(l[i][0], l[i - 1][0] + 1);
r[i][0] = max(r[i][0], r[i - 1][0] + 1);
}
if (b[i - 1] <= a[i])
{
l[i][0] = min(l[i][0], l[i - 1][1] + 1);
r[i][0] = max(r[i][0], r[i - 1][1] + 1);
}
if (b[i - 1] <= b[i])
{
l[i][1] = min(l[i][1], l[i - 1][1]);
r[i][1] = max(r[i][1], r[i - 1][1]);
}
if (a[i - 1] <= b[i])
{
l[i][1] = min(l[i][1], l[i - 1][0]);
r[i][1] = max(r[i][1], r[i - 1][0]);
}
}
bool ok = false;
if ((n >= l[2 * n][0] and n <= r[2 * n][0]) || (n >= l[2 * n][1] and n <= r[2 * n][1]))
{
ok = true;
}
if (ok == false)
{
cout << -1;
return 0;
}
int last = INF;
int cnt = n;
int pos = 2 * n;
vector<char> peal;
while(pos > 0)
{
if (cnt > 0 && a[pos] <= last && cnt >= l[pos][0] && cnt <= r[pos][0])
{
peal.push_back('A');
last = a[pos];
cnt--;
}
else
{
peal.push_back('B');
last = b[pos];
}
pos--;
}
reverse(peal.begin(), peal.end());
for (char v : peal) cout << v;
}