semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
void course(char a[],int n)
{
    int i,j,k;
    for(k=0;k<n;k++)
    {
        if(a[k]==')')
        a[k]='?';
        else if(a[k]=='(')
        a[k]='$';
        else a[k]=32;
    }
    for(k=0;k<n;k++)
    {
        for(i=0;i<n-1;i++)
        {
            if(a[i]=='$')
            {
                for(j=i+1;j<n;j++)
                {
                    if(a[j]=='$')
                    break;
                    else if(a[j]=='?')
                    {
                        a[i]=32;
                        a[j]=32;
                        break;
                    }
                    else continue;
                }
            }
        }
    }
}
int main()
{
    char a[10000];
    int n,m,j;scanf("%d",&m);
    for(j=0;j<m;j++)
    {
		scanf("%s",a);
        puts(a);
        n=strlen(a);
        course(a,n);
        puts(a);
    }
    return 0;
}
int main()
{
    char s[300],ss[300];
    int a[300];
    int l,i,t;
    do
    {
if (scanf("%s",s)==EOF) break;
          //gets(s);
          if (s[0]=='\0') break;
          l=strlen(s);
if (l==0) break;
          t=0;
          for (i=0;i<l;i++)
          {
             ss[i]=' ';
             if (s[i]=='(')
             {
                t++;
                a[t]=i;           
             }
             if (s[i]==')')
             {
                if (t==0)
                {
                   ss[i]='?';
                   continue;      
                }
                t--;
             }                            
          }
          for (i=1;i<=t;i++) ss[a[i]]='$';
          ss[l]='\0';
puts(s);
          puts(ss);
    }
    while(0==0);
}
void peidui(void);
int m,i;
char a[100][110];
int main()
{
   char c,h;
   int j,k,t[100]={0},p,n=0;
   while(cin>>a[n])
   {
      n=n+1;
      }
   for(i=0;i<n;i++)
   {
   for(j=0;j<110;j++)
   {
      if(a[i][j]!='\0')
      t[i]=t[i]+1;
      if(a[i][j]=='\0')
      break;
      }
      }
      for(i=0;i<n;i++)
      {
         for(j=0;j<t[i];j++)
         cout<<a[i][j];
         cout<<endl;
         for(m=0;m<t[i];m++)
         {
           if(a[i][m]=='(')
           {
           m=m+1;
           peidui();
           m=m-1;
           }
           if((a[i][m]>='a'&&a[i][m]<='z')||(a[i][m]>='A'&&a[i][m]<='Z'))
           a[i][m]=' ';
         }
         for(m=0;m<t[i];m++)
         {
            if(a[i][m]=='(')
            a[i][m]='$';
            if(a[i][m]==')')
            a[i][m]='?';
            }
         for(m=0;m<t[i];m++)
         cout<<a[i][m];
         cout<<endl;
         }
         return 0;
         }
   void peidui(void)
   {    
        int k;
        k=m-1;
        if((a[i][m]>='a'&&a[i][m]<='z')||(a[i][m]>='A'&&a[i][m]<='Z'))
        {
           a[i][m]=' ';
           m=m+1;
           peidui();
           }
        if(a[i][m]=='(')
        {
           m=m+1;
           peidui();
           }
        if(a[i][m]==')'&&a[i][k]=='(')
        {
           a[i][m]=' ';
           a[i][k]=' ';
           m=m+1;
           peidui();
           }
           }
const int maxn = 110;

int main()
{
    char str[maxn],str2[maxn];
    while(scanf("%s",str)!=EOF){
        int len = strlen(str);
        for(int i = 0 ;i < len; i++)str2[i]=str[i];
        for(int  i = 0; i < len; i ++){
            if(str[i]==')'){
                for(int  j  = i-1; j >=0; j--){
                    if(str[j]=='(') {
                        str[j]=str[i]=' ';
                        break;
                    }
                }
            }
        }
        for(int i =0 ; i <len; i++) printf("%c",str2[i]);
        printf("\n");
        for(int i = 0; i < len; i++){
            if(str[i]=='(') printf("$");
            else if(str[i]==')') printf("?");
            else printf(" ");
        }
        printf("\n");
    }
    
    return 0;
}
void Replace(char s[],int x)
{
	for(int i=x+1;i<strlen(s);i++)
	{
	if(s[i]==')'){s[x]=s[i]=' ';return;}
	if(s[i]=='(')Replace(s,i);
	}
	s[x]='$';
return;
}
void Find(char s[])
{
	for(int i=0;i<strlen(s);i++)
	{
if(s[i]=='$'||s[i]=='?')continue;
		if(s[i]=='(')Replace(s,i);
		else if(s[i]==')')s[i]='?';
		else {
			s[i]=' ';
		}
	}
	return;
}

int main()
{
	char live[101];//string live;
int n;cin>>n;
	while(n--)
	{
cin>>live;
		cout<<live<<endl;
		Find(live);
		cout<<live<<endl;
	}
	return 0;
}
int main()
{
	char s[101];
	int n,i,j;
	while(1)
	{
		if(scanf("%s",s)==EOF) return 0;
		puts(s);
		n=strlen(s);
		for(i=0;i<n;i++)
		{
			if(s[i]=='(') s[i]='$';
			else
			{
				if(s[i]==')') s[i]='?';
				else s[i]=' ';
			}
		}
		for(i=0;i<n;i++)
		{
			if(s[i]=='?')
			{
				for(j=i;j>=0;j--)
				{
					if(s[j]=='$')
					{
						s[j]=' ';
						s[i]=' ';
						break;
					}
				}
			}
		}
		while(s[n-1]==' ')
		{
			s[n-1]='\0';
			n--;
		}
		while(s[0]==' ')
		{
			for(i=0;i<n;i++)
			{
				s[i]=s[i+1];
			}
		}
		puts(s);
	}
	return 0;
}
int main()
{
	char a[101];
	int i,num=1,j;
	while(cin.getline(a,101))
	{
		cout<<a<<endl;
		for(i=0;a[i]!='\0';i++)
		{
			num=1;
			if(a[i]!=')'&&a[i]!='(')
				cout<<" ";
			if(a[i]=='(')
			{
				if(a[i+1]=='\0')
				{
					cout<<"$";
					continue;
				}
				for(j=i+1;a[j]!='\0';j++)
				{
					if(a[j]=='(')
						num++;
					if(a[j]==')')
						num--;
					if(num==0)
					{
						cout<<" ";
						break;
					}
					if(a[j+1]=='\0'&&num!=0)
						cout<<"$";
				}
			}
			num=1;
			if(a[i]==')')
			{
				if(i==0)
				{
					cout<<"?";
					continue;
				}
				for(j=i-1;j>=0;j--)
				{
					if(a[j]==')')
						num++;
					if(a[j]=='(')
						num--;
					if(num==0)
					{
						cout<<" ";
						break;
					}
					if(j==0&&num!=0)
						cout<<"?";
				}
			}
		}
		cout<<endl;
	}
	return 0;
}
void main()
{
	char str[100][1000], s[1000];
	int i, j, n, a[1000], temp;
	for(i=0; i<100; i++)
	{
		str[i][0]='\0';
	}
	i=0;
	do
	{
		gets(str[i]);
		if(str[i][0]=='\0')
			break;
		i++;
	}while(1);
	n=i-1;//???????n????????
	for(i=0; i<=n; i++)
	{
		for(j=0; j<1000; j++)
			s[j]='\0'; 
		temp=0;
		printf("%s\n",str[i]);
		for(j=0; j< (strlen(str[i])); j++)
		{
			if(str[i][j]=='(')
			{
				s[j]='$';
				temp++;
				a[temp]=j; 
			}
			else if(str[i][j]==')')
			{
				if(temp==0)
					s[j]='?';
				else
				{
					s[a[temp]]=' ';
					temp--;
					s[j]=' ';
				}
			}
			else
				s[j]=' ';
		}
		printf("%s\n",s);
	}
}
int main()
{
	char a[101] = {'\0'}, b[101] = {'\0'};
	int i, j;
	while (cin.getline(a, 101))
	{
		for (i = 0;i < 101; i++)
		{
			if (a[i] == '\0')
				break;
			if (a[i] == '(')
				b[i] = '$';
			else if (a[i] == ')')
				b[i] = '?';
			else
				b[i] = ' ';
			if (a[i] == ')')
			{
				for (j = i; j >= 0; j--)
				{
					if (a[j] == '(' && b[j] == '$')
					{
						b[i] = ' ';
						b[j] = ' ';
						break;
					}
				}
			}
		}
		cout << a << endl;
		cout << b << endl;
		for (i = 0; i < 101; i++) 
		{
			a[i] = '\0';
			b[i] = '\0';
		}
	}
	return 0;
}
int main()
{
	int i,n,c,d,e,f,g,k,j,l,b[100];
	scanf("%d",&n);
	char a[1000][150],h[1000][150];
	for(i=0;i<n;i++)
	{
		scanf("%s",a[i]);
		b[i]=strlen(a[i]);
		e=0;
		for(j=0;j<b[i];j++)
		{
			if(a[i][j]=='(')
			{
				h[i][j]='$';
				e++;
			}
			if(a[i][j]==')')
			{
				h[i][j]='?';
			}
			if(a[i][j]!='('&&a[i][j]!=')')
				h[i][j]=' ';
		}
		for(l=0;l<e;l++)
		{
			for(j=0;j<b[i];j++)
			{
				c=f=d=-1;
				if(h[i][j]=='$')
				{
					c=j;
					g=c;
					for(g=c;g<b[i];g++)
					{
						if(h[i][g]=='?')
						{
							f=g;break;
						}
					}
					for(k=f-1;k>=c;k--)
					{
						if(h[i][k]=='$')
						{
							d=k;
							break;
						}
					}
					if(d!=-1&&f!=-1)
					{
						h[i][d]=' ';
						h[i][f]=' ';
					}
					break;
				}
			}
		}
		for(j=0;j<b[i];j++)
		{
			printf("%c",a[i][j]);
		}
		printf("\n");
		for(j=0;j<b[i];j++)
		{
			printf("%c",h[i][j]);
		}
		printf("\n");
		
	}	
	return 0;
}
void fun(char a[])
{
	
	int len,i,j,n,bi=0,zuo,you,hao=0;
	char b[200];
	int c[200];
	len=strlen(a);
	for(j=0;j<len;j++)
	{
		if(a[j]=='('||a[j]==')')
		{
			b[bi]=a[j];
			c[bi]=j;
			bi+=1;
		}
	}
	for(j=0;j<bi-1;j++)
	{
		if(b[j]=='('&&b[j+1]==')')
		{
			zuo=j;
			you=j+1;
			hao=1;
			break;
		}
	}
	if(hao==0)
		return;
	while(b[zuo]=='('&&b[you]==')')
	{
		b[zuo]=1;
		b[you]=1;
		zuo-=1;
		you+=1;
	}
	for(j=0;j<bi;j++)
	{
		if(b[j]==1)
		{
			a[c[j]]=1;
		}
	}
	fun(a);
}

int main()
{
	int i,n,len,j;
	char a[200];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		scanf("%s",a);
		len=strlen(a);
		puts(a);
		fun(a);
		for(j=0;j<len;j++)
		{
			if(a[j]!='('&&a[j]!=')')
				printf(" ");
			else if(a[j]=='(')
				printf("$");
			else if(a[j]==')')
				printf("?");
		}
		printf("\n");
	}
	return 0;
}
int main()
{
       char a[100];
       int nn;
       scanf("%d",&nn);
       while(gets(a))
       {
             char ans[101];
             for(int i=0;i<101;i++)
             {
                  ans[i]=' ';
             }
             printf("%s\n",a);
             int L=strlen(a);
             ans[L]='\0';
             int mark=0;
             for(int i=99;i!=-1;i--)
             {
                  if(a[i]=='(')
                  {
                      for(int j=i+1;;j++)
                      {
                            if(a[j]==')')
                            {
                            a[i]='0';
                            a[j]='0';
                            mark++;
                            break;
                            }
                            if(j==101)
                            {
                             a[i]='0';
                             ans[i]='$';
                             break;
                            }
                       }
                    }
                }
                for(int i=0;i<101;i++)
                    if(a[i]==')') ans[i]='?';
                printf("%s\n",ans);
       }
}
int main()
{
    char s[120];
    while(cin>>s)
{
    char res[120];//result
    int lens;
    int leftnum=0;//remaining leftnum
    int left[120];
    lens=strlen(s);
    for(int i=0;i<lens;i++)
        res[i]=' ';
    for(int i=1;i<120;i++)
      left[i]=-1;
    for(int i=0;i<lens;i++)
    {
        if( s[i]=='(' )
            left[++leftnum]=i;
        if( s[i]==')' )
        {
            if(leftnum==0)
              res[i]='?';
            else
            {
              left[leftnum]=-1;
              leftnum--;
            }
        }        
    }
    for(int i=1;i<=leftnum;i++)
        res[left[i]]='$';
    for(int i=0;i<lens;i++)
        cout<<s[i];
    cout<<endl; 
    for(int i=0;i<lens;i++)
        cout<<res[i];
    cout<<endl;
}
    
    return 0;
}
int main()
{
	int n,i,j,m,x=0,y,z;	
	char c[105];	
	scanf("%d",&n);
	getchar();
    for(i=0;i<n;i++)
	{
		char b[105]={0};
		gets(b);
		m=strlen(b);
		for(j=0;j<m;j++)
		{		
		if(b[j]=='(')
			{
				c[j]='$';
			}
		else if(b[j]==')')
			{
				c[j]='?';
			}
		else if(b[j]!='('&&b[j]!=')')
			{
				c[j]=' ';
			}
		}
		y=0;
		for(j=0;j<m;j++)
		{			
			if(c[j]=='?')
			{
				z=0;y++;
				for(x=j;x>=0;x--)
				{
					if(c[x]=='$')
					{
						z++;
						if(x==j-1||y==z)
						{
						y--;
						c[x]=' ';
						c[j]=' ';
						break;
						}
					}				
				}
				if(x==-1)
				{
					y--;
					c[j]='?';
				}
			}			
		}
		for(j=0;j<m;j++)
	   {
		   printf("%c",b[j]);
	   }
	   printf("\n");
	    for(j=0;j<m;j++)
	   {
		   printf("%c",c[j]);
	   }
	   printf("\n");
	}
	return 0;
}
int main()                      //???????????????????? 
{
    char a[110]={'\0'};
    while(cin.getline(a,110,'\n'))          //??n??? 
    {
    int left=0,right=0,tema=0;
    int b[110]={0};
    char d[110]={'\0'};
    for(int i=1;a[i-1]!='\0';i++)
    {cout<<a[i-1];}
    cout<<endl;
    for(int i=1;a[i-1]!='\0';i++)
    {
    d[i-1]=' ';
    if(a[i-1]=='(')              //????????left+1???????? 
    {left++;
    b[tema++]=i-1;
    }
    else if(a[i-1]==')')              //???????????? 
    {
    if(left<=right)             //????????????????? 
    {d[i-1]='?';}  
    if(left>right)                         //?????????? 
    {right++;tema--;}                      //?????1?????1 
    } 
    }
    for(int k=1;k<=tema;k++)     //?????????? 
    {
    d[b[k-1]]='$';
    }
    for(int i=1;a[i-1]!='\0';i++)//???? 
    {
    cout<<d[i-1];
    }
    cout<<endl;
    for(int i=1;i<=100;i++)
    {a[i-1]=='\0';}
    }                           //????? 
    return 0;
}
int main()
{
	int len=0,i=0,j=0,sum=0;
	char in[101];
	int sign[101];
	char out[101];
	while(cin.getline(in,101)&& in[0]!='\0')
	{
		len=strlen(in);
		for(i=0;i<len;i++)
			sign[i]=0;
		for(i=0;i<len;i++)
			out[i]=' ';
		out[len]='\0';
		for(i=0;i<len;i++)
		{
			sum=1;
			if(in[i]=='(')
			{
				if(i==len-1)
					out[i]='$';
				else
				{
		     		for(j=i+1;j<len;j++)//??sum=0?????????????????????????????
					{
				     	
				        	if(in[j]=='(')
					        	sum=sum+1;
				        	if(in[j]==')')
					        	sum=sum-1;
							if(sum==0)
							{
						    	sign[j]=1;
					        	break;
							}
					}
				if(sum!=0)
					out[i]='$';
				}
			}
		}
		for(i=0;i<len;i++)
		{
			if(in[i]==')'&&sign[i]==0)
				out[i]='?';
		}
			cout<<in<<endl;
			cout<<out<<endl;

	}
	return 0;
}
//????????????????????????????????
void deal(char s[])
{
	int i,j,p=0;
	for(i=0;i<strlen(s);i++)
	if(s[i]=='(')
	{
		for(j=i+1;j<strlen(s);j++)
		if(s[j]=='('||s[j]==')')
		break;
		if(s[j]==')')
		{
			s[j]='a';
			s[i]='a';
			p++;
		}
	}
	if(p!=0)
	deal(s);
}
int main()
{
	int i,j;
	char s[1000],s1[1000],t[1000];
	while(0==0)
	{
	for(i=0;i<1000;i++)
	s[i]=0;
	gets(s);
	if(s[0]=='\0') break;
	strcpy(s1,s);
	deal(s1);
	for(i=0;i<strlen(s);i++)
	if(s1[i]=='(') t[i]='$';
	else if(s1[i]==')') t[i]='?';
	else t[i]=' ';
	t[strlen(s)]='\0';
	printf("%s\n%s\n",s,t);
	}
	return 0;
}
char a[200];
int findpair(int i,int j)//i?????????j??????????????
{
	int temp;//?????????
	if (a[i]=='\0')//????????
		return -1;//?-1?????????
	else if (a[i]=='(')//???????
	{
		temp=findpair(i+1,j+1);//??????
		if (temp==-1)//??????
		{
			a[i]='$';//?????$
			return -1;
		}
		else//?????
		{
			a[i]=' ';//???????
			return findpair(temp+1,j);
			//?temp????????i?temp????????????????????????temp????????
		}
	}
	else if (a[i]==')')//???????
	{
		if (j==0)//?????????
		{
			a[i]='?';//??????
			return findpair(i+1,j);//????????
		}
		else//????????
		{
			a[i]=' ';//???????
			return i;//???????
		}
	}
	else if (a[i]==' ')//??a[i]???
		return (findpair(i+1,j));//??????????
}
int main() {
	while (cin >> a)
	{
		cout <<a<<endl;
		for (int i=0;i<=(int)strlen(a)-1;++i)//??????????????
			if (a[i]!=')'&&a[i]!='('&&a[i]!='\0')
				a[i]=' ';
		findpair(0,0);//?????????????????????????0
		cout <<a<<endl;
	}
	return 0;
}
int main()
{
	int l , r , fl , lenth ;
	int i , j , k ;
	char str[100 + 10]; 
    int left[101] , right[101];
	int flag[100 + 10];
	
	while(cin.getline(str, 101))
	{        
		l = 1; r = 1;
		for( lenth = 0 ; str[lenth] != '\0' ; lenth ++)
		{
			if( str[lenth] == '(' ) 
			{
				flag[lenth] = 1;
				left[l ++] = lenth;
			}
			else if( str[lenth] == ')' )
			{
				flag[lenth] = 2;
				right[r ++] = lenth;
			}
			else 	flag[lenth] = 0;
		}
				
		fl = lenth - 1;
		
		for ( j = l - 1 ; j >= 1 ; j --)
			for(k = 1 ; k <= r - 1 ; k ++)
			{
				if(right[k] > left[j])
				{
					flag[ right[k] ] = 0;
					flag[ left[j] ] = 0;
					right[k] = -1;
					break;
				}
			}
		
		for( lenth = 0 ; str[lenth] != '\0' ; lenth ++)
			printf("%c",str[lenth]);
		
			printf("\n");
			
		/*for( j = fl ; j >= 0; j --)
			if(flag[j] != 0) break; */
		
		/*for( i = 0 ; i <= fl ; i ++)
			if(flag[i] != 0 ) break;*/
		
		for( lenth = 0 ; lenth <= fl  ; lenth ++)
		{   
			if(flag[lenth] == 0)     printf(" ");
		    else if(flag[lenth] == 1)	printf("$");
			else if(flag[lenth] == 2)	printf("?");
        }

        printf("\n");
		memset(str,0,sizeof(str));
	}
	
	return 0;
}
char s[1000];
char m[1000];
int match(int l){
	//&ordm;&macr;&Ecirc;&yacute;·&micro;&raquo;&Oslash;&Otilde;&Ograve;&micro;&frac12;&micro;&Auml;&Oacute;&Ograve;&Agrave;¨&ordm;&Aring;&micro;&Auml;&Iuml;&Acirc;±ê
	int r = l;
	while(s[++r]!=')'){
		if(s[r]=='(')r=match(r);
		if(s[r]=='\0')break;
	}
	if(s[r]=='\0')m[l]='$';
	return r; 
}
int nextL(int i){
	while(s[i]!='\0' && s[i]!='('){
		if(s[i]==')')m[i]='?';
		i++;	
	}
	return i;
}
int main(){
	int i,j,k;
	while(cin>>s){
		for(i=0;i<strlen(s);++i)m[i]=' ';
		m[i]='\0';
		i=0;
		i=nextL(i);
		while(s[i]!='\0'){
			i=match(i);
			if(s[i]=='\0')break;
			else i++;
			i=nextL(i);
		}
		cout<<s<<endl<<m<<endl;
	}
	return 0;
}
void match(char s[])
{
    char b[101];
    puts(s);
    int l,x=0,i,left[101];
    l=strlen(s);
    for(i=0;i<l;i++) b[i]=' ';b[l]='\0';
    for(i=0;i<l;i++)
        if(s[i]=='(') left[x++]=i;
        else if(s[i]==')')
            {
                if(x==0) b[i]='?';
                else x--;
            }
    for(i=0;i<x;i++) b[left[i]]='$';
    puts(b);
}
int main()
{
    char a[101];
    while((gets(a)))
    {
        match(a);
    }
}
int main()
{
	static char c[102],d[102];int i,j,k,s;
	while(gets(c))
	{puts(c);
	for(i=0;c[i]!='\0';i++)
	{
	
		if(c[i]=='(')
		d[i]=1;
		else if(c[i]==')')
		d[i]=2;
		else d[i]=3;
	}
	while(1)
	{   s=0;
		for(j=0;j<=i-2;j++)
		{
			if(d[j]==1)
			break;
		}
		for(k=j+1;k<=i-1;k++)
		{
			if(d[k]==2)
			{
			s=1;
			break;
		    }
		}
	if(s==0)
	break;
	for(j=0;j<=i-2;j++)
	{   if(d[j]==1)
		{
		for(k=j+1;k<=i-1;k++)
		{   if(d[k]==1)
		    {
		    	j=k;
		    } 
			if(d[k]==2)
			{
				d[j]=3;
				d[k]=3;
				break;
			}
		}
	    }
	}
	
    }
    for(k=0;k<=i-1;k++)
	{
		switch(d[k])
		{
			case 1:printf("$");break;
			case 2:printf("?");break;
			case 3:printf(" ");break;
		}
	}
	printf("\n");
}
	
}
int main(){
	char str[101], res[101];
	int n, stack[100], k;

	cin >> n;
	while (n--){
		cin >> str;
		int len = strlen(str);
		for (int i = 0; i < len; i++)
			res[i] = ' ';
		res[len] = '\0';

		k = 0;
		for (int i = 0; i < len; i++){
			if (str[i] == ')'){
				if (k != 0 && stack[k - 1] < 0)
					k--;
				else
					stack[k++] = i + 1;
			}else if (str[i] == '(')
				stack[k++] = -(i + 1);
		}
		for (int i = 0; i < k; i++){
			int index = stack[i];
			if (index < 0)	res[-index - 1] = '$';
			else			res[index - 1] = '?';
		}
		cout << str << endl;
		cout << res << endl;
	}
	return 0;
}
int main()
{
	char str[110]={'\0'};
	while(cin.getline(str,110,'\n'))
	{int length;
	length=strlen(str);
	for(int i=0;i<length;i++)
		cout<<str[i];
	cout<<endl;
	for(int i=length-1;i>=0;i--)
	{
		if(str[i]=='(')
		{
			str[i]='$';
			for(int j=i+1;j<length;j++)
			{
				if(str[j]=='?')
				{
					str[j]=' ';
					str[i]=' ';
					break;
				}
			}
		}
		else if(str[i]==')')
			str[i]='?';
		  else 
			str[i]=' ';
	}
	for(int i=0;i<length;i++)
		cout<<str[i];
	cout<<endl;}
	return 0;
}
right(char s[],int i,int n)
{
	int j;
	int left=0,right=0;
	int num=0;

	for(j=i+1;j<n;j++){
		if(s[j]=='(') right++;
		if(s[j]==')') left++;
		if(right<left) {num=1;break;}
	}
	return(num);
}

left(char s[],int i)
{
	int j;
	int left=0,right=0;
	int num=0;
	
	for(j=i-1;j>=0;j--){
		if(s[j]=='(') right++;
		if(s[j]==')') left++;
		if(right>left) {num=1;break;}
	}
	return(num);
}

trans(char s1[],char s2[])
{
	int len;
	int i;
	len=strlen(s1);

	for(i=0;i<len;i++){
		if(s1[i]!=')'&&s1[i]!='(')
			s2[i]=' ';

			if(s1[i]==')')
			{
				if(left(s1,i)==1) s2[i]=' ';
				else s2[i]='?';
			}

			if(s1[i]=='(')
			{
				if(right(s1,i,len)==1) s2[i]=' ';
				else s2[i]='$';
			}
	}
	s2[len]='\0';
	return;
}



main()
{
	int i,j;
	int n;
	struct aaa
	{
		char s1[105];
		char s2[105];
	};
	struct aaa line[20];

	scanf("%d\n",&n);



	for(i=0;i<n;i++){
	
		gets(line[i].s1);
		trans(line[i].s1,line[i].s2);
	}

	for(i=0;i<n;i++)
		printf("%s\n%s\n",line[i].s1,line[i].s2);
}
int main()
{
	char c[100];
	int len,i,j,a[100];
	while(scanf("%s",c)!=EOF)
	{
		if(c[0]=='\0')  break;
		printf("%s\n",c);
		len=strlen(c);
		for(i=0;i<len;i++)
		{
			if(c[i]=='(')
				a[i]=-1;
			else 
				if(c[i]==')')
				{
					a[i]=1;
					for(j=i-1;j>=0;j--)
					{
						if(a[j]==-1)
						{
							a[j]=0;
							a[i]=0;
							break;
						}
					}
				}
				else a[i]=0;
		}
		for(i=0;i<len;i++)
		{
			if(a[i]==-1)
				printf("$");
			if(a[i]==1)
				printf("?");
			if(a[i]==0)
				printf(" ");
		}
		printf("\n");
	}
	return 0;
}
//***********************************************************************
//????????? 
//????????? 
//??????
//***********************************************************************
int match(int i, int n, char str[]);        //???? 
int main()                                  //??? 
{
    char str[101];
    int n; 
    while(cin>>str)                        //???? 
    {
                   cout<<str<<endl; 
                   n = strlen(str);
                   match(0, n, str);
                   cout<<str<<endl; 
    } 
    return 0;
}
int match(int i, int n, char str[])       //???? 
{
     if(i == n)                           //???? 
          return 0; 
     else if(str[i] == ')')              //?????? 
     {
          str[i] = '?'; 
          for(int j = i - 1; j >= 0; j--)
                              if(str[j] == '$')
                              {
                                        str[j] = ' ';
                                        str[i] = ' ';
                                        break; 
                              } 
          match(i + 1, n, str); 
          return 0;
     }
     else if(str[i] == '(')            //??????$ 
     {
          str[i] = '$';
          match(i + 1, n, str);        //???? 
          return 0;
     }  
     else 
     {
          str[i] = ' ';
          match(i + 1, n, str); 
          return 0; 
     } 
}
int main()
{
	char s[11][101]={{'\0'}},s0[101];
	int i=0,j,k,l,c;
	while(i<=10)
	{
		scanf("%s",s[i]);
		strcpy(s0,s[i]);
		l=strlen(s[i]);
		for(j=l-1;j>=0;j--)
		{
			c=0;
			if(s[i][j]=='(')
			{
				for(k=j;k<=l-1;k++)
				{
					if(s[i][k]==')')
					{
						c=1;
						s[i][k]=' ';
						s[i][j]=' ';
						break;;
					}
				}
				if(c==0)
					s[i][j]='$';
			}
			else if(s[i][j]!=')')
				s[i][j]=' ';
		}
		for(j=0;j<=l-1;j++)
		{
			if(s[i][j]==')')
				s[i][j]='?';
		}
		for(j=0;j<=l-1;j++)
			printf("%c",s0[j]);
		printf("\n");
		for(j=0;j<=l-1;j++)
			printf("%c",s[i][j]);
		printf("\n");
		i++;
	}
}
main()
{
    char a[100],s;
    int i,j,k,l,m,n,t,b[100],c[100];
    for (;;)
    {
        gets(a);
        if(a[0]=='\n')
        break;
        n=strlen(a);
        for(i=0,j=0,k=0;i<n;i++)
        {
            if(a[i]=='(')
            {
                b[j]=i;
                j++;
            }
            else if(a[i]==')')
            {
                c[k]=i;
                k++;
            }
        }
        for(i=n-1;i>=0;i--)
        {
            for (l=j-1;l>=0;l--)
            {
                if (b[l]==i)
                {
                    for (t=0;t<k;t++)
                    {
                        if (c[t]>i)
                        {
                            b[l]=-1;
                            c[t]=-1;
                            break;
                        }
                    }
                    break;
                }
            }
        }
        printf("%s\n",a);
        for(i=0;i<n;i++)
        {
            for (l=0;l<j;l++)
            {
                if(b[l]==i)
                {
                    printf("$");
                    break;
                }
            }
            if(l!=j)
            continue;
            for (t=0;t<k;t++)
            {
                if(c[t]==i)
                {
                    printf("?");
                    break;
                }
            }
            if(t!=k)
            continue;
            printf(" ");
        }

     printf("\n");
     a[0]='\n';
    }
}
void main()
{
	char s[101]={0};
    while(scanf("%s",s)!=EOF)
	{
		int i,j,l,t1,t2;
        printf("%s\n",s);
		l=strlen(s);
		for(i=0;i<l;i++)
		{
			if(s[i]=='(')
			{
				t1=1;t2=0;
				for(j=i+1;j<l;j++)
				{
					if(s[j]=='(')
						t1++;
					if(s[j]==')')
						t2++;
					if(t1==t2)
					{
						s[i]=s[j]=' ';
						break;
					}
				}
			}
		}

		for(i=0;i<l;i++)
			if(s[i]=='(')
				s[i]='$';
			else if(s[i]==')')
				s[i]='?';
			else
				s[i]=' ';

			printf("%s\n",s);
	}
	
}