#include<stdio.h>
#include<math.h>
char data[];
char tree[1050];
int len;
char judge(int fro, int end)
{
int num0 = 0;
int num1 = 0;
for (int i = fro; i <= end; i++)
if (data[i] == '0') num0++;
else if (data[i] == '1') num1++;
if (num0 && num1) return 'F';
else if (!num0 && num1) return 'I';
else if (num0 && !num1) return 'B';
}
void create(int node, int fro, int end)
{
if (node >= len * 2) return;
tree[node] = judge(fro, end);
create(node * 2, fro, (fro + end) / 2);
create(node * 2 + 1, (fro + end) / 2 + 1, end);
}
void lad(int node)
{
if (tree[node] != '\0')
{
lad(node * 2);
lad(node * 2 + 1);
printf("%c", tree[node]);
}
return;
}
int main()
{
int N;
scanf("%d", &N);
getchar();
getchar();
len = (int)pow(2, N);
for (int i = 1; i <= len; i++)
scanf("%c", &data[i]);
create(1, 1, len);
lad(1);
return 0;
}