1 #include <bits/stdc++.h>
2 #define _for(i,a,b) for(int i = (a);i < b;i ++)
3 typedef long long ll;
4 using namespace std;
5 string S;
6 int N;
7 inline ll read()
8 {
9 ll ans = 0;
10 char ch = getchar(), last = ' ';
11 while(!isdigit(ch)) last = ch, ch = getchar();
12 while(isdigit(ch)) ans = (ans << 1) + (ans << 3) + ch - '0', ch = getchar();
13 if(last == '-') ans = -ans;
14 return ans;
15 }
16 inline void write(ll x)
17 {
18 if(x < 0) x = -x, putchar('-');
19 if(x >= 10) write(x / 10);
20 putchar(x % 10 + '0');
21 }
22 struct TreeNode
23 {
24 char val;
25 TreeNode *left;
26 TreeNode *right;
27 };
28 char judge(int le,int ri)
29 {
30 bool oflag = false;
31 bool zflag = false;
32 _for(i,le,ri+1)
33 {
34 if(S[i]=='0')
35 zflag = true;
36 else if(S[i]=='1')
37 oflag = true;
38 }
39 if(zflag && !oflag)
40 return 'B';
41 else if(!zflag && oflag)
42 return 'I';
43 else
44 return 'F';
45 return -1;
46 }
47 TreeNode* build(int le,int ri)
48 {
49 TreeNode* tmp = (TreeNode*)malloc(sizeof(TreeNode));
50 int mi = (le+ri)/2;
51 tmp->val = judge(le,ri);
52 if(le!=ri)
53 {
54 tmp->left = build(le,mi);
55 tmp->right = build(mi+1,ri);
56 }
57 else
58 tmp->left = tmp->right = NULL;
59 return tmp;
60 }
61 void postorder(TreeNode *root)
62 {
63 if(!root)
64 return ;
65 postorder(root->left);
66 postorder(root->right);
67 printf("%c",root->val);
68 }
69 int main()
70 {
71 TreeNode* root;
72 scanf("%d",&N);
73 cin >> S;
74 root = build(0,pow(2,N)-1);
75 postorder(root);
76 return 0;
77 }