type pnode = ^tnode; tnode = record left, right : pnode; c : char; end; pstackel = ^tstackel; tstackel = record node : pnode; next:pstackel; end; var stack: pstackel; t:text; n,i:word; s:ansistring; pn : pnode; procedure pop; inline; begin if stack<>nil then stack:=stack^.next; end; procedure push(pn:pnode); inline; var ps : pstackel; begin new (ps); ps^.next:=stack; ps^.node := pn; stack:=ps; end; var j:word; last:pstackel; begin assign(t,'expressions.in'); reset(t); readln(t,n); while n>0 do begin stack:=nil; readln(t,s); for i:=1 to length(s) do begin new(pn); pn^.c:=s[i]; if s[i]<'a' then begin pn^.right:=stack^.node; pop; pn^.left:=stack^.node; pop; end else begin pn^.left:=nil; pn^.right:=nil; end; push(pn); end; j:=length(s); last:=stack; while (stack<>nil) do begin s[j]:=stack^.node^.c; dec(j); if stack^.node^.left<>nil then begin new(last^.next); last^.next^.node:=stack^.node^.left; last:=last^.next; end; if stack^.node^.right<>nil then begin new(last^.next); last^.next^.node:=stack^.node^.right; last:=last^.next; end; pop; end; for j:=1 to length(s) do write(s[j]); writeln; deC(n); end; end.