Program BLABLA;

Var
   ADoc,BDoc:Text;
   Temp:String;
   Count,Count2,Counter:Integer;
   GlobeFlag:Boolean;


Function Find(X:Char):Integer;

Begin
case X of
     '(':Find:=1;
     '[':Find:=2;
     '{':Find:=3;
     End;
End;


Function Check(X:Char; Start:Integer):Boolean;

Var

   Flag:ShortInt;

Begin


Flag:=0;
For Counter:=Start to Length(Temp) do
    Begin
    If Flag=0 then
     Begin
     Case (Find(X)) of
     1:Begin
       Case Temp[Counter] of
            ')':Flag:=2;
            ']':Flag:=1;
            '}':Flag:=1;
            '(':Begin
                Writeln('RECURSE');
                If Check('(',Counter+1)=False Then
                   Flag:=1
                Else If Check('(',Counter+1)=true Then
                   Flag:=2;
                End;
            '[':Begin
                Writeln('RECURSE');
                If Check('[',counter+1)=False then
                   Flag:=1
                Else If Check('[',counter+1)=True then
                   Flag:=2;
                End;
            '{':Begin
                Writeln('RECURSE');
                If Check('{',Counter+1)=False then
                   Flag:=1
                Else If Check('{',Counter+1)=true then
                   Flag:=2;
                End;
            End;
       End;
     2:Begin
       Case Temp[Counter] of
            ']':Flag:=2;

            ')':Flag:=1;

            '}':Flag:=1;

            '(':Begin
                Writeln('RECURSE');
                If Check('(',Counter+1)=False Then
                   Flag:=1
                Else If Check('(',Counter+1)=true Then
                   Flag:=2;
                End;
            '[':Begin
                Writeln('RECURSE');
                If Check('[',counter+1)=False then
                   Flag:=1
                Else If Check('[',counter+1)=True then
                   Flag:=2;
                End;
            '{':Begin
                Writeln('RECURSE');
                If Check('{',Counter+1)=False then
                   Flag:=1
                Else If Check('{',Counter+1)=true then
                   Flag:=2;
                End;
            End;
       End;
     3:Begin
       Case Temp[Counter] of
            '}':Flag:=2;

            ']':Flag:=1;

            ')':Flag:=1;

            '(':Begin
                Writeln('RECURSE');
                If Check('(',Counter+1)=False Then
                   Flag:=1
                Else If Check('(',Counter+1)=true Then
                   Flag:=2;
                End;
            '[':Begin
                Writeln('RECURSE');
                If Check('[',counter+1)=False then
                   Flag:=1
                Else If Check('[',counter+1)=True then
                   Flag:=2;
                End;
            '{':Begin
                Writeln('RECURSE');
                If Check('{',Counter+1)=False then
                   Flag:=1
                Else If Check('{',Counter+1)=true then
                   Flag:=2;
                End;
            End;
       End;
      End;
      End;
      End;

if Flag=2 then
   Check:=True
Else
   Check:=False;

End;

begin

Assign(ADoc,'DATA4.txt');
Assign(BDoc,'OUT4.txt');

Reset(ADoc);
Rewrite(BDoc);


For Count2:=1 to 5 do
    Begin
    Readln(ADoc,Temp);
    Count:=1;
    GlobeFlag:=True;
    While Count <= Length(Temp) do
          Begin
          Case (Temp[Count]) of
               '(':GlobeFlag:=Check('(',(Count+1));
               '[':GlobeFlag:=Check('[',(Count+1));
               '{':GlobeFlag:=Check('{',(Count+1));
               ')':GlobeFlag:=False;
               ']':GlobeFlag:=False;
               '}':GlobeFlag:=False;
               End;
          Count:=Count+1;
          End;

    If GlobeFlag=True then
       Writeln(BDoc,'balanced')
    Else IF GlobeFlag=False then
       Writeln(BDoc,'not balanced');
    End;

Close(BDoc);


end.

