/**
AUTHOR:Rahul Shah
LINK:http://w...content-available-to-author-only...j.com/problems/CMEXPR
PROBLEM:Complicated Expression
**/
#include <iostream>
#include <cstdio>
using namespace std;
int pre[256];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
string s,ans="";
//setting precedence for the operators
pre['*']=2;
pre['/']=2;
pre['+']=1;
pre['-']=1;
cin>>s;
int n=s.length();
int cnt=0;
int mn=1000; //minimum precedence level of an expression
/*
rem-whether the ith character has to be removed or not
prel-precedence level of the expression under consideration
lb-position of the left paranthesis(brackets)
*/
int prel[251],lb[251],rem[251];
for(int i=0;i<n;i++)
rem[i]=-1;
int k=0,m=0; //used as stack top for lb,prel
for(int i=0;i<n;i++)
{
if(s[i]=='(')
{
prel[k++]=mn;
lb[m++]=i;
mn=1000;
cnt++;
}
//for(in)
else if(s[i]==')')
{
int st=lb[--m],en=i;
bool remove=true;
//if the operator before the left paranthesis is +,-,*,/
if(st>=0&&pre[s[st-1]]>=1)
{
/*if mn is greater than precedence level then the
paranthesis are redundant and hence can be omitted*/
if(mn<=pre[s[st-1]])
{
remove=false;
//if they are equal then left association is checked
if(mn==pre[s[st-1]]&&(s[st-1]=='*'||s[st-1]=='+'))
{
remove=true;
}
}
}
//Similarly, the operator after the paranthesis is checked
if(remove&&en<n-1&&pre[s[en+1]]>=1)
{
if(mn<=pre[s[en+1]])
{
remove=false;
if(mn==pre[s[en+1]])
{
remove=true;
}
}
}
//cout<<st<<" "<<en<<" "<<mn<<" "<<pre[s[st-1]]<<" "<<pre[s[en+1]]<<" "<<remove<<"\n";
rem[st]=rem[en]=remove;
mn=min(mn,prel[--k]);
cnt--;
}
else if(cnt!=0)
{
if(pre[s[i]]>=1)
{
mn=min(mn,pre[s[i]]);//e.g. (a+b-c*d) min preced is 1 of +.
}
}
else
rem[i]=-1;
}
for(int i=0;i<n;i++)
{
if(rem[i]<=0)
ans+=s[i];
}
cout<<ans<<"\n";
}
return 0;
}
LyoqCgpBVVRIT1I6UmFodWwgU2hhaApMSU5LOmh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5qLmNvbS9wcm9ibGVtcy9DTUVYUFIKUFJPQkxFTTpDb21wbGljYXRlZCBFeHByZXNzaW9uCgoqKi8KCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGNzdGRpbz4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKaW50IHByZVsyNTZdOwppbnQgbWFpbigpIAp7CglpbnQgdDsKCQoJc2NhbmYoIiVkIiwmdCk7Cgl3aGlsZSh0LS0pCgl7CgkJc3RyaW5nIHMsYW5zPSIiOwoJCS8vc2V0dGluZyBwcmVjZWRlbmNlIGZvciB0aGUgb3BlcmF0b3JzCgkJcHJlWycqJ109MjsKCQlwcmVbJy8nXT0yOwoJCXByZVsnKyddPTE7CgkJcHJlWyctJ109MTsKCQljaW4+PnM7CgkJaW50IG49cy5sZW5ndGgoKTsKCQlpbnQgY250PTA7CgkJaW50IG1uPTEwMDA7IC8vbWluaW11bSBwcmVjZWRlbmNlIGxldmVsIG9mIGFuIGV4cHJlc3Npb24KCQkvKgoJCXJlbS13aGV0aGVyIHRoZSBpdGggY2hhcmFjdGVyIGhhcyB0byBiZSByZW1vdmVkIG9yIG5vdAoJCXByZWwtcHJlY2VkZW5jZSBsZXZlbCBvZiB0aGUgZXhwcmVzc2lvbiB1bmRlciBjb25zaWRlcmF0aW9uCgkJbGItcG9zaXRpb24gb2YgdGhlIGxlZnQgcGFyYW50aGVzaXMoYnJhY2tldHMpCgkJKi8KCQlpbnQgcHJlbFsyNTFdLGxiWzI1MV0scmVtWzI1MV07CgkJZm9yKGludCBpPTA7aTxuO2krKykKCQkJcmVtW2ldPS0xOwkJCQoJCWludCBrPTAsbT0wOwkvL3VzZWQgYXMgc3RhY2sgdG9wIGZvciBsYixwcmVsCgkJZm9yKGludCBpPTA7aTxuO2krKykKCQl7CgkJCWlmKHNbaV09PScoJykKCQkJewoJCQkJcHJlbFtrKytdPW1uOwoJCQkJbGJbbSsrXT1pOwoJCQkJbW49MTAwMDsKCQkJCWNudCsrOwoJCQl9CgkJCS8vZm9yKGluKQoJCQllbHNlIGlmKHNbaV09PScpJykKCQkJewoJCQkJaW50IHN0PWxiWy0tbV0sZW49aTsKCQkJCQoJCQkJYm9vbCByZW1vdmU9dHJ1ZTsKCQkJCS8vaWYgdGhlIG9wZXJhdG9yIGJlZm9yZSB0aGUgbGVmdCBwYXJhbnRoZXNpcyBpcyArLC0sKiwvCgkJCQlpZihzdD49MCYmcHJlW3Nbc3QtMV1dPj0xKQkKCQkJCXsKCQkJCQkvKmlmIG1uIGlzIGdyZWF0ZXIgdGhhbiBwcmVjZWRlbmNlIGxldmVsIHRoZW4gdGhlCgkJCQkJcGFyYW50aGVzaXMgYXJlIHJlZHVuZGFudCBhbmQgaGVuY2UgY2FuIGJlIG9taXR0ZWQqLwkKCQkJCQlpZihtbjw9cHJlW3Nbc3QtMV1dKQkKCQkJCQl7CgkJCQkJCXJlbW92ZT1mYWxzZTsKCQkJCQkJLy9pZiB0aGV5IGFyZSBlcXVhbCB0aGVuIGxlZnQgYXNzb2NpYXRpb24gaXMgY2hlY2tlZAoJCQkJCQlpZihtbj09cHJlW3Nbc3QtMV1dJiYoc1tzdC0xXT09JyonfHxzW3N0LTFdPT0nKycpKQkKCQkJCQkJCQkJCQkJCQkJCQkJCQoJCQkJCQl7CgkJCQkJCQlyZW1vdmU9dHJ1ZTsKCQkJCQkJfQoJCQkJCX0KCQkJCX0KCQkJCS8vU2ltaWxhcmx5LCB0aGUgb3BlcmF0b3IgYWZ0ZXIgdGhlIHBhcmFudGhlc2lzIGlzIGNoZWNrZWQKCQkJCWlmKHJlbW92ZSYmZW48bi0xJiZwcmVbc1tlbisxXV0+PTEpCgkJCQl7CgkJCQkJaWYobW48PXByZVtzW2VuKzFdXSkKCQkJCQl7CgkJCQkJCXJlbW92ZT1mYWxzZTsKCQkJCQkJaWYobW49PXByZVtzW2VuKzFdXSkKCQkJCQkJewoJCQkJCQkJcmVtb3ZlPXRydWU7CgkJCQkJCX0KCQkJCQl9CgkJCQl9CgkJCQkvL2NvdXQ8PHN0PDwiICI8PGVuPDwiICI8PG1uPDwiICI8PHByZVtzW3N0LTFdXTw8IiAiPDxwcmVbc1tlbisxXV08PCIgIjw8cmVtb3ZlPDwiXG4iOwoJCQkJcmVtW3N0XT1yZW1bZW5dPXJlbW92ZTsKCQkJCW1uPW1pbihtbixwcmVsWy0ta10pOwoJCQkJY250LS07CgkJCX0KCQkJZWxzZSBpZihjbnQhPTApCgkJCXsKCQkJCWlmKHByZVtzW2ldXT49MSkKCQkJCXsKCQkJCQltbj1taW4obW4scHJlW3NbaV1dKTsvL2UuZy4gKGErYi1jKmQpIG1pbiBwcmVjZWQgaXMgMSBvZiArLgoJCQkJfQoJCQl9CgkJCWVsc2UKCQkJCXJlbVtpXT0tMTsKCQl9CgkJZm9yKGludCBpPTA7aTxuO2krKykKCQl7CgkJCWlmKHJlbVtpXTw9MCkKCQkJCWFucys9c1tpXTsKCQkJCQoJCX0KCQljb3V0PDxhbnM8PCJcbiI7Cgl9CglyZXR1cm4gMDsKfQ==