#include <bits/stdc++.h>
using namespace std;
struct fbitree {
char fbi;
int id, dad, left, right;
bool o;
}a[1025];
char ret(char a, char b) {
if (a == 'F' or b == 'F') {
return 'F';
} else if (a == 'B') {
if (b == 'I') {
return 'F';
} else {
return 'B';
}
} else if (a == 'I') {
if (b == 'B') {
return 'F';
} else {
return 'I';
}
}
}
void out(fbitree FBI[], int first) {
int l = FBI[first].left, r = FBI[first].right, d = FBI[first].dad;
if (l == 0 or (FBI[l].o == 1 and FBI[r].o == 1)) {
cout << FBI[first].fbi;
FBI[first].o = 1;
} else {
out(FBI, l);
}
if (d == 0) {
return;
}
if (FBI[d].left == first) {
int k = FBI[d].right;
out(FBI, k);
} else {
out(FBI, d);
}
}
int n;
int main() {
cin >> n;
if (n == 0) {
char c;
cin >> c;
cout << c;
return 0;
}
for (int i = 1; i <= 1 << n; i ++) {
char c;
cin >> c;
a[i].id = i;
if (c == '0') {
a[i].fbi = 'B';
} else if (c == '1') {
a[i].fbi = 'I';
}
}
int s1 = 1, s2 = 2, now = n, dadid = (1 << n) + 1;
while (now > 1) {
a[s1].dad = a[dadid].id;
a[s2].dad = a[dadid].id;
a[dadid].left = a[s1].id;
a[dadid].right = a[s2].id;
a[dadid].fbi = ret(a[s1].fbi, a[s2].fbi);
s1 += 2;
s2 += 2;
dadid ++;
if (s1 >= 1 << (now - 1)) {
now --;
}
}
out(a, 1);
return 0;
}