#include
#include<stdio.h>
#include<string.h>
#include
using namespace std;
int main()
{
int a[10000][250]={0},b[10000][250]={0};int count1=0,i=0,flag=0,w,flag1=0,c[10000][2]={0},k=0;
int test,count2;
char s[10000][250];
char value=’\0’;
scanf("%d",&test);
stack s1;
for(int w=0;w<test;w++)
{
i=0;
scanf("%s",&s[w]);
int len=strlen(s[w]);
s[w][len]=’\0’;
while(i<len)
{
a[w][i]=-1;
b[w][i]=0;
i++;
}
}
i=0;
w=0;
k=0;
value=’\0’;
for( w=0;w<test;w++)
{
// printf("\nyes");
while(s[w][i]!=’\0’)
{
// printf("\nyes");
if(s[w][i]==’(’)
{
s1.push((s[w][i]));
c[k][0]=count1;
c[k++][1]=0;
count2=count1;
count1=count1+1;
if(i>0 && (s[w][i-1]==’+’ || s[w][i-1]==’-’ || s[w][i-1]==’/’ || s[w][i-1]==’’))
value=s[w][i-1];
i++;
while(1)
{
if(s[w][i]==’)’)
break;
if(s[w][i]==’(’)
break;
// printf("\nyes12");
if(s[w][i]==’+’ || s[w][i]==’-’ || s[w][i]==’/’ || s[w][i]==’’)
{
// printf("\nyes13:%c",value);
if(value=='-' && (s[w][i]=='+' || s[w][i]=='-'))
{
//printf("\nyes1");
s1.push(s[w][i]);
a[w][count2]=1;
c[k-1][1]=1;
//printf("\nc[%d][%d]:%d",k-1,1,c[k-1][1]);
i++;
}
else if(value=='/' && s[w][i]=='/')
{
// printf("\nyes2");
s1.push(s[w][i]);
a[w][count2]=1;
c[k-1][1]=1;
// printf("\nc[%d][%d]:%d",k-1,1,c[k-1][1]);
i++;
}
else if(value=='*' && (s[w][i]=='+' || s[w][i]=='-'))
{
// printf("\nyes3");
s1.push(s[w][i]);
a[w][count2]=1;
c[k-1][1]=1;
//printf("\nc[%d][%d]:%d",k-1,1,c[k-1][1]);
i++;
}
else if(value=='/' && (s[w][i]=='+' || s[w][i]=='-'))
{
// printf("\nyes4");
s1.push(s[w][i]);
a[w][count2]=1;
c[k-1][1]=1;
//printf("\nc[%d][%d]:%d",k-1,1,c[k-1][1]);
i++;
}
else
{
s1.push(s[w][i]);
i++;
}
}
else
i++;
}
}
else if(s[w][i]==’)’)
{
i++;
// printf("\nyes5");
if(s[w][i]==’+’ || s[w][i]==’-’ || s[w][i]==’/’ || s[w][i]==’*’)
{
value=s[w][i];
char new1=s1.top();
if(value==’/’ && new1==’/’)
{
a[w][c[k-1][0]]=1;
flag=1;
k–;
s1.pop();
}
new1=s1.top();
if(new1=='(')
k--;
while(new1!='(')
{
if(value=='*' && (new1=='+' || new1=='-'))
{
//printf("\nc[%d][%d]:%d",k-1,0,c[k-1][0]);
a[w][c[k-1][0]]=1;
flag=1;
}
else if(value=='/' && (new1=='+' || new1=='-') )
{
// printf("\nc[%d][%d]:%d",k-1,0,c[k-1][0]);
a[w][c[k-1][0]]=1;
flag=1;
}
s1.pop();
new1=s1.top();
k--;
}
if(!(s1.empty()))
s1.push(value);
}
// i++;
}
else
i++;
}
count1=0;
int j=0;
i=0;
printf("\n");
while(s[w][i]!='\0')
{
// printf("\nyes2");
if(s[w][i]=='(')
{
b[w][j++]=count1;
if(a[w][count1]==-1)
{
}
else
printf("(");
// out[w][i]='(';
count1=count1+1;
// flag=1;
}
else if(s[w][i]==')')
{
//printf("\nj=%d",j);
if(a[w][b[w][j-1]]==-1)
{
//a[count1]=-2;
}
else if((j-1)>=0)
printf(")");
// out[w][i]=')';
j--;
}
else
printf("%c",s[w][i]);
//out[w][i]=s[w][i];
i++;
}
// int len1=strlen(out[w]);
// out[w][len1]=’\0’;
flag1=0;
value=’\0’;
count1=i=0;
k=0;
}
}