var i,m,n:longint; t:array[0..1025]of char; s,sflag:ansistring; procedure solve(l,r:longint;var s,sflag:ansistring); var mid:longint; s1,s2,s1f,s2f:ansistring; begin if l=r then if t[l]='1' then begin s:='I'; sflag:='I'; exit; end else begin s:='B'; sflag:='B'; exit; end; mid:=(l+r)div 2; solve(l,mid,s1,s1f); solve(mid+1,r,s2,s2f); if (s1f='I')and(s2f='I') then sflag:='I' else if (s1f='B')and(s2f='B') then sflag:='B' else sflag:='F'; s:=s1+s2+sflag; end; begin readln(n);m:=trunc(exp(ln(2)*n)); for i:=1 to m do read(t[i]); solve(1,m,s,sflag); writeln(s); close(input); close(output); end. /************************************************************** Problem: 2246 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/