program expr; var n:integer; v,p:string[255]; procedure simplify; var x,zac,kon,leng,vyrcnt:integer; muldivonly,odstran:boolean; begin leng:=length(v); p:=''; x:=0; while x='a') and (v[x]<='z') then begin p:=p+#1; end else begin p:=p+#255; end; end; repeat zac:=-1; x:=1; while x<=leng do begin if (v[x]=')') and (p[x]=#255) then begin break; end; if (v[x]='(') and (p[x]=#255) then begin zac:=x; end; inc(x,1); end; if zac<>-1 then begin {nasiel zatvorku} kon:=x; {preskuma ju} vyrcnt:=1; muldivonly:=true; x:=zac+1; inc(x,integer(ord(p[x]))); while x'*') and (v[x]<>'/') and (v[x]<>')') then begin muldivonly:=false; end; inc(x,integer(ord(p[x]))); end; odstran:=false; {1.pravidlo} if vyrcnt=1 then begin odstran:=true; end else begin {2.pravidlo} if ((zac-1<1) or (v[zac-1]='+') or (v[zac-1]='(')) and ((kon+1>leng) or (v[kon+1]='+') or (v[kon+1]='-') or (v[kon+1]=')')) then begin odstran:=true; end else begin {3.pravidlo} if (muldivonly) and ((zac-1<1) or (v[zac-1]='-') or (v[zac-1]='*') or (v[zac-1]='(')) then begin odstran:=true; end; end; end; if odstran then begin delete(v,kon,1); delete(p,kon,1); delete(v,zac,1); delete(p,zac,1); dec(leng,2); end else begin p[zac]:=chr(kon-zac+1); p[kon]:=#254; end; end; until zac=-1; end; begin readln(n); while n>0 do begin readln(v); simplify; writeln(v); dec(n); end; end.