semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
int main()
{
	int i,j,t,n1,n2;
	int k[100];
	char a[100][100],b[100];
	i=0;
	while(gets(a[i]))
	{
		k[i]=strlen(a[i]);//??????????
		if(k[i]==0)
			break;
		i++;
	}//????????????????
	t=i;
	for(i=0;i<t;i++)
	{
		n1=0;
		n2=0; 
		for(j=0;j<k[i];j++)
		{
			b[j]=' ';
		}//???b?????? 
		for(j=0;j<k[i];j++)//????
		{
			if(n1<0)
				n1=0;//?n1???0
			if(a[i][j]=='(')
			{
				n1++;
			}//???????n1?1
			if(a[i][j]==')')
			{
				if(n1==0)
				{
					b[j]='?';
				 }
				 n1--;
			}//???????n1?1????1?n1?0??b?j?=?
		}
		for(j=k[i]-1;j>=0;j--)//????
		{
			if(n2<0)
				n2=0;//?n2???0
			if(a[i][j]==')')
			{
				n2++;
			}//???????n2?1
			if(a[i][j]=='(')
			{
				if(n2==0)
				{
					b[j]='$';
				}
				n2--;
			}//???????n2?1????1?n2?0??b?j?=$
		}
		for(j=0;j<k[i];j++)
		{
			cout<<a[i][j];
		}
		cout<<endl;//????????
		for(j=0;j<k[i];j++)
		{
			cout<<b[j];
		}
		cout<<endl;//????b???
	}
	return 0;
}
/**
??????
*/


int main()
{
	char str[101], flag[101];
	while( cin.getline(str, 101))
	{
		cout << str << endl;
		int len, num = 0;
		len = strlen(str);
		int i, j;
		for ( i = 0; i < len; i ++ )
			flag[i] = ' ';
		flag[i] = '\0';
		for ( i = 0; i < len; i ++ )
		{
			if ( str[i] == '(')
			{
				num ++;
				flag[i] = '$';
			}
			if ( str[i] == ')')
			{
				num --;
				if ( num >= 0 )
				{
					for ( j = i - 1; j >= 0; j -- )
						if ( str[j] =='(' )
						{
							flag[j] = ' ';
							str[j] = ' ';
							break;
						}
				}
				else
				{
					flag[i] = '?';
					num ++;
				}
			}
		}
		cout << flag << endl;
	}
	return 0;
}
main()
{
	
	char a[101];
	int l,i,j,n;
while(scanf("%s",a)!=EOF)
	{
	
	l=strlen(a);
	puts(a);
	for(i=0;i<l;i++)
	{
		if(a[i]!='('&&a[i]!=')')
			a[i]=' ';
		else
		{
			if(a[i]==')')
			{
				n=0;
				for(j=i-1;j>=0;j--)
				{
					if(a[j]=='(')
					{
						a[i]=' ';
						a[j]=' ';
						n++;
						break;
					}
				}
				if(n==0)
					a[i]='?';
			}
		}
	}
	for(i=0;i<l;i++)
	{
		if(a[i]=='(')
			a[i]='$';
	}
	puts(a);}
	return 0;
}
//3704:??????
//2010?11?13?
//1000012753 ???
int main()
{
	char ch[200];
	int a[200];
	int n, l, i, j, m;
	while(cin.getline(ch,150))
	{
		l = strlen(ch);
		for(i = 0; i < l; i++)
			if(ch[i] == '(')
				a[i] = -1;
			else if(ch[i] == ')')
			{
				for(j = i - 1; j >=0; j--)
					if(a[j] == -1)
						break;
				if(j != -1)
				{
					a[i] = 0;
					a[j] = 0;
				}
				else
					a[i] = 1;
			}
			else
				a[i] = 0;
		n = 0;
		for(i = 0; i < l; i++)
			if(a[i] != 0)
				n++;
		m = n ;
		i = 0;
		cout << ch << endl;
		while(n > 0)
		{
			if(a[i] == -1)
				cout << "$";
			else if(a[i] == 1)
				cout << "?";
			else if(m != n)
				cout << " ";
			if(a[i] != 0)
				n--;
			i++;
		}
		cout << endl;
	}
	return 0;
}
int main()
{
    char str[101];
    int flag[101], i, j, k, len;
    while(cin >> str)
    {
        for(i = 0; i < 101; i++)
            flag[i] = 0;
        len = strlen(str);
        for(i = len - 2; i >= 0; i--)
        {
            if(str[i] == '(')
            {
                for(j = i + 1; j < len; j++)
                {
                    if(str[j] == ')' && flag[j] == 0)
                    {
                        flag[j] = 1;
                        flag[i] = 1;
                        break;
                    }
                }
            }
        }
        cout << str << endl;
        for(i = 0; i < len; i++)
        {
            if(str[i] != '(' && str[i] != ')')
                cout << " ";
            else
            {
                if(str[i] == '(' && flag[i] == 0)
                    cout << "$";
                if(str[i] == '(' && flag[i] == 1)
                    cout << " ";
                if(str[i] == ')' && flag[i] == 0)
                    cout << "?";
                if(str[i] == ')' && flag[i] == 1)
                    cout << " ";
            }
        }
        cout << endl;
    }
    return 0;
}
int main()
{
	char s[101];
	char kuohao[101]={0};
	int i,j,len;
	char ch;
	while(scanf("%s",s)>0){
		for(i=0; ;i++){
			if(s[i]=='(') kuohao[i]=1;
			else if(s[i]==')'){
				for(j=i;j>=0;j--){
					if(kuohao[j]==1){
						kuohao[j]=0;
						break;
					}
				}
				if(j<0) kuohao[i]=3;
			}
			else if(s[i]=='\0') break;
		}
	printf("%s\n",s);
	len=strlen(s);
	for(i=0;i<len;i++){
		if(kuohao[i]==0) printf(" ");
		else if(kuohao[i]==1) printf("$");
		else if(kuohao[i]==3) printf("?");
	} 
	printf("\n");
	for(i=0;i<len;i++) kuohao[i]=0;
	}
	return 0;
}
int main()
{
	char s[101],ss[101];
	int len,i,j,q,h=0;
	while(gets(s))
	{
		len=strlen(s);
		strcpy(ss,s);
		for(i=0;i<len;i++)
			if(s[i]=='(')
			{
				h = i;
				for(j=i+1;j<len;j++)
					if(s[j]=='(')
						i=j;
					else if(s[j]==')')
					{
						s[i]=' ';
						s[j]=' ';
						break;
					}
				if(j == len) break;
				if(h == i) continue;
				else i = h-1;
			}
		for(q=0;q<len;q++)
			if(s[q]==')')
				s[q]='?';
			else if(s[q]=='(')
				s[q]='$';
			else
				s[q]=' ';
		printf("%s\n",ss);
		printf("%s\n",s);
	}
	return 0;
}
static char c[2][101];
int i,n;
void search(int a)
{
	for(i++;i<n;i++)
	if(c[0][i]==')')
	{
		c[1][a]=' ';
		c[1][i]=' ';
		break;}
	else if(c[0][i]=='(')
	search(i);
	else c[1][i]=' ';
	if(i>=n)
	c[1][a]='$';
}
int main()
{
	while(scanf("%s",&c[0])!=EOF)
	{
		for(n=0;c[0][n]!='\0';n++);
		for(i=0;i<n;i++)
		if(c[0][i]==')')
		c[1][i]='?';
		else if(c[0][i]=='(')
		search(i);
		else c[1][i]=' ';
		puts(c[0]);
		puts(c[1]);
		for(i=0;i<n;i++)
		{
			c[0][i]=0;
			c[1][i]=0;
			}
		}
}
int main()
{	
   char str1[100][100],str2[100][100]={'\0'};	
   int i,j,k,l1,l2,t[100],l;	
   for(i=0;i<100;i++)	
   {   scanf("%s",str1[i]);
       k=strlen(str1[i]);
	   if(k==0) break;
       puts(str1[i]);
       l1=0;l2=0;		
       for(j=0;j<k;j++)	
       {if(str1[i][j]==')') {t[l2]=j;l2++;}}	
       for(l=0;l<l2;l++)	
       {	
           for(j=t[l];j>=0;j--)	
          {if(str1[i][j]=='(') {str1[i][t[l]]='A';str1[i][j]='A';break;}	}	
       }	
       for(j=0;j<k;j++)	
       {if(str1[i][j]=='(') str2[i][j]='$';	
       else if(str1[i][j]==')') str2[i][j]='?';	
       else str2[i][j]=' ';	
       }	
       puts(str2[i]);	
    }
   return 0;
}
char a[1000]={'0'};
char c[1000]={' '};
int qq,pp;
int t=0;
int x(int m)
{
	if (qq<=m-1)
	{
	if (a[qq]=='(')
	{
		qq++;
		t++;
		x(m);
	}
	else if (a[qq]==')')
	{
		qq++;
		t--;
		if (t==-1)
		{
			c[qq-1]='?';
		    t=0;
		}
		x(m);
	}
	else if (a[qq]!='('&&a[qq]!=')')
	{
		qq++;
		x(m);
	}
	}
	t=0;
	return 0;
}
int y(int m)
{
	if (pp>=0)
	{
		if (a[pp]==')')
		{
			pp--;
			t++;
			y(m);
		}
		else if (a[pp]=='(')
		{
			pp--;
			t--;
			if (t==-1)
			{
				c[pp+1]='$';
				t=0;
			}
			y(m);
		}
		else if (a[pp]!='('&&a[pp]!=')')
		{
			pp--;
			y(m);
		}
	}
	t=0;
	return 0;
}
int main()
{
	char b;
	int i=0;
	while (cin.get(b))
	{
		if (b!='\n')
			a[i++]=b;
		else if (b=='\n')
		{
			for (int j3=0;j3<=i-1;j3++)
				c[j3]=' ';
			cout<<a<<endl;
			qq=0;
			x(i);
			pp=i-1;
			y(i);
			for (int j=0;j<=i-1;j++)
				cout<<c[j];
			cout<<'\n';
			for (int j1=0;j1<=i-1;j1++)
			{
				c[j1]=' ';
				a[j1]='\0';
			}
			i=0;
		}
	}
}
main()
{
    char c2[101];
    int i,j,n;
    for(;;)
    {
    scanf("%s",c2);
    if(c2[0]=='\n')break;
    printf("%s\n",c2);
    for(i=0,n=0;c2[i]!='\0';i++)
    {
        if(c2[i]=='(') n=i;
        //else if(c2[i]!=')'&&c2[i]!='(') c2[i]='a';
    }
    for(i=n;i>=0;i--)
    {
        if(c2[i]=='(')
           {
               for(j=i+1;c2[j]!='\0';j++)
               {
                 if(c2[j]==')')
                 {
                     c2[j]='a';c2[i]='a';break;
                 }
               }
           }
    }
    for(i=0;c2[i]!='\0';i++)
    {
        if(c2[i]=='(')printf("$");
        else if(c2[i]==')')printf("?");
        else printf(" ");
    }
    printf("\n");
    c2[0]='\n';
    }
}
int main()
{
	char c[120][120],mark[120],p[120];
	int t=0,n=0;
	
	while(gets(c[n]))
	{
		t=0;
	    if(c[n][0]=='\n') break;
		for(int i=0;i<strlen(c[n]);i++)
		{
			if(c[n][i]=='(')
			{
				mark[i]='$';
				p[t]=i;
				t++;
			}
			else if(c[n][i]==')')
			{
				if(t==0)
				{
					mark[i]='?';
				}
				else
				{
					mark[p[t-1]]=' ';
					mark[i]=' ';
					t--;
				}
			
			}
			else mark[i]=' ';
		}		
		puts(c[n]);
		
		for(int i=0;i<strlen(c[n]);i++)
		{
			cout<<mark[i];
		}
		cout<<endl;
		n++;
	}

	return 0;
}
int main()
{
	int n,i;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
		int left=0;
		int p[105],t=0;
		int k,len;
		char a[105];
		char b[105];
		scanf("%s",a);
		len=strlen(a);
		for(k=0;k<len;k++)
			b[k]=' ';
		b[len]='\0';
		for(k=0;k<len;k++)
		{
			if(a[k]=='(')
			{
				b[k]='$';
				p[t]=k;
				t++;
				left++;
			}
			if(a[k]==')')
			{
				if(left!=0)
				{
					t--;
					b[p[t]]=' ';
					left--;
				}
				else
				{
					b[k]='?';
				}
			}
		}
		printf("%s",a);
		printf("\n");
		printf("%s",b);
		printf("\n");
	}
	return 0;
}
/*
 * XIII4.cpp
 *
 *  Created on: 2012-11-30
 *      Author: 12100
 *      ??:??????
 */
char a[101], b[101];
int panduan[101];
int l;
void deal(int k) {
	if (k > 0) {
		if (a[k - 1] == ')')
			{panduan[k - 1] = 1;deal(k - 1);}
		else if (a[k - 1] == '(') {
			panduan[k - 1] = 2;
			for (int i = k; i < l; i++)
				if (panduan[i] == 1) {
					panduan[k - 1] = 0;
					panduan[i] = 0;
					break;
				}
			deal(k - 1);
		} else
			deal(k - 1);
	}
}
int main() {
	int i;
	for (i = 0; i < 101; i++) {
		a[i] = ' ';
		b[i] = ' ';
		panduan[i] = 0;
	}
	while (cin >> a) {
		l = strlen(a);
		deal(l);
		for (i = 0; i < l; i++) {
			if (panduan[i] == 1)
				b[i] = '?';
			if (panduan[i] == 2)
				b[i] = '$';
		}
		for (i = 0; i < l; i++)
			cout << a[i];
		cout << endl;
		for (i = 0; i < l; i++)
			cout << b[i];
		cout << endl;
		for (i = 0; i < 101; i++) {
			a[i] = ' ';
			b[i] = ' ';
			panduan[i] = 0;
		}
	}
}
/*
 *???: brackets.cpp
 *??: ???
 *????: 2012-11-26
 *??: ????
 */



int brackets_matching(char str[],char result[],int n,int j) 
/*???i?????str?????????result?
 * n?????.i????????????????????
 */
{
	int i,p;
	for (i=j;str[i];i++){ //???????
		switch (str[i]){
			case '(' : //???
			p=brackets_matching(str,result,n+1,i+1); //??????????
			if (str[p]==')') //????
				result[i]=' '; //???????????
			else
				result[i]='$'; //??????????p??\0
			i=p;
			break;

			case ')' : //???
			if (!n) //????
				result[i]='?';
			else{
				result[i]=' ';
				return i;
			}
			break;

			default :
			result[i]=' ';
		}
	}
	result[i]=0;
	return i;
}

int main()
{
	char a[MAXL],result[MAXL];
	while (cin>>a){
		cout << a << endl;
		brackets_matching(a,result,0,0);
		cout << result << endl;
	}
	return 0;
}
int main(void)
{
        char *exp=(char*)malloc(sizeof(char)*MAX_LEN);
        int *res=(int*)malloc(sizeof(int)*MAX_LEN);
        while(gets(exp))
        {
                int cur=0,pt=0,len=strlen(exp);
                for(int i=0;i!=MAX_LEN;++i)
                        res[i]=-1;
                for(;cur!=len;++cur)
                {
                        if(exp[cur]!='('&&exp[cur]!=')')
                                res[cur]=0;
                        if(exp[cur]==')')
                        {
                                for(pt=cur-1;pt>=0;--pt)
                                {
                                        if(exp[pt]=='('&&res[pt])
                                        {
                                                res[pt]=0;
                                                res[cur]=0;
                                                break;
                                        }
                                }
                        }
                }
                puts(exp);
                for(int i=0;i!=len;++i)
                {
                        if(exp[i]=='('&&res[i]==-1)
                                res[i]=1;
                        else if(exp[i]==')'&&res[i]==-1)
                                res[i]=2;
                        switch(res[i])
                        {
                        case 0:
                                putchar(' ');
                                break;
                        case 1:
                                putchar('$');
                                break;
                        case 2:
                                putchar('?');
                                break;
                        }
                }
                printf("\n");
        }
        return 0;
}
main()
{
	int n,e,x,i,t,j,k;
	char s[102];
	scanf("%d",&n);
	for(e=0;e<n;e++)
	{
		scanf("%s",s);
		printf("%s\n",s);
		x=strlen(s);
		for(i=0;i<x;i++)
		{
			if(s[i]!='('&&s[i]!=')')
			{
				s[i]=' ';
			}
		} 
		for(i=0;i<x;i++)
		{
			if(s[i]=='(')
			{
				for(j=i+1;j<x;j++)
				{
					if(s[j]==')')
					{
						t=0;
						for(k=i+1;k<j;k++)
						{
							if(s[k]!=' ')
							{
							t=1;
							break;
							}
						}
						if(t==0)
						{
							s[i]=' ';
							s[j]=' ';
							i=-1;
							break;
						}
					}
				}
			}
		}
		for(i=0;i<x;i++)
		{
			if(s[i]=='(')
			s[i]='$';
			if(s[i]==')')
			s[i]='?'; 
		}
		printf("%s\n",s); 
	}
}
int main()

{

    int i,n;

    char a[500]={0},b[500]={0};
    scanf("%d",&n);
    while(n--)
  {
   while(scanf("%s",a)!=EOF)
	{

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

        i = 0;

        while(a[i]!='\0'){

            if(a[i]=='('){

                b[i]='$';

            }else if(a[i]==')'){  

                int k;

                for(k=i-1;k>=0;k--){

                    if(b[k]=='$'){

                        b[i]=b[k]=' ';

                        break;

                    }

                }

                if(k==-1)

                    b[i]='?';

            }else{

                b[i]=' ';

            }  

            i++;

        }

  

        printf("%s",b);

         printf("\n");

        memset(b, 0, 500);

        memset(a, 0, 500);

        fflush(stdin);

    }
}

    return 0;

}
int main(int argc, char* argv[])
{
    int n,m,i,j;
	char str[101],str1[101];
	scanf("%d\n",&n);
	for(m=0;m<n;m++)
	{
      gets(str);
	  puts(str);
	  for(i=0;i<strlen(str);i++)
	  {
	    if(str[i]==')')
		for(j=i;j>=0;j--)   
		   if(str[j]=='(') 
		   {
			   str[j]='0';
			   str[i]='0';
			   break;
		   }
	  }

      printf("\n");
	  for(i=0;i<strlen(str);i++)
	  {
	   if(str[i]=='(')  printf("$");
	   if(str[i]==')')  printf("?");
	   if(str[i]!='('&&str[i]!=')')  printf(" ");
	  }
	  printf("\n");
	}
	return 0;
}
int main()
{
    int c = 0;
    char s[300] = {0};
    char s2[300] = {0};
    int top = 0;
    int heap[300] = {0};
    while ( gets(s) != 0 )//end of file
    {
        top = 0;
        int i = 0, len = strlen(s);
        for ( i = 0; i < len; i++ )
        {
            if ( s[i] == '(' )
            {
                heap[top++] = i;
                s2[i] = '$';
            }
            else if ( s[i] == ')' )
            {
                if ( top == 0 )
                {
                    s2[i] = '?';
                }
                else
                {
                    s2[i] = ' ';
                    s2[heap[top-1]] = ' ';
                    top--;
                }
            }
            else
            {
                s2[i] = ' ';
            }
        }
        s2[len] = '\0';
        printf("%s\n%s\n", s, s2);
    }
    return 0;
}
int main()
{
	char c[101], ans[101];
	int left[101];               //??????????? 
	int n = 0, i, t = 0;         //t?????????? 
	while ( cin >> c )
	{
		t = 0; 
		n = strlen(c);
		for ( i = 0; i < n; i++ )
		{
			ans[i] = ' ';
			if ( c[i] == '(' )
				left[t++] = i;
			if ( c[i] == ')' )
			{
				if ( t == 0 ) ans[i] = '?';
				else t--;
			}
		}
		for ( i = 0; i < t; i++ )
			ans[left[i]] = '$';
		ans[n] = '\0';
		cout << c << endl << ans << endl;
	}
}
int main()
{
  char line[101],label[101];
  int pos[101];
  int n , j ;
  int left;
  cin >> n ;
cin.get();
  for( j = 1 ;j <= n ;j ++ )
  {
       left = 0 ;
      
       cin .getline(line,101);    
       int len = strlen(line);
       for(int i = 0 ;i <= 100 ; i ++ )
       label[i]=' ';
       for( int i = 0 ;i <= len - 1; i ++ )
       {
                if(line[i] == '(')
                  {
                        left ++ ;
                        pos[left] = i ;    
                  }    
                   if(line[i] == ')')
                   {
                              if( left == 0)
                                label[i] ='?';        
                               else
                                left -- ;
                   }
      }
      for( int i = 1 ;i <= left ; i ++ )
           label[pos[i]]='$';
           label[len]='\0';
           cout<< line << endl ;
           cout<< label << endl ;
  }return 0 ;
}
void main()
{
	char s[MAX],s0[MAX],t[MAX];
	int len,i,j;
	while(scanf("%s",s)!=EOF){
		len=strlen(s);
		strcpy(s0,s);
		for(i=0;i<len;i++)
			if(s0[i]==')'&&i>0)
				for(j=i-1;j>=0;j--)
					if(s0[j]=='('){
						s0[i]=' ';
						s0[j]=' ';
						break;
					}
			
		for(i=0;i<len;i++){
			if(s0[i]=='(')
				t[i]='$';
			else if(s0[i]==')')
				t[i]='?';
			else
				t[i]=' ';
		}

		printf("%s\n",s);
		for(i=0;i<len;i++)
			printf("%c",t[i]);
		putchar('\n');
	}
}
int main()
{
    int i,n;
    char a[500]={0},b[500]={0};
    scanf("%d",&n);
    while(n--){
        scanf("%s",a);
        printf("%s\n",a);
        i = 0;
        while(a[i]!='\0'){
            if(a[i]=='('){
                b[i]='$';
            }else if(a[i]==')'){
                int k;
                for(k=i-1;k>=0;k--){
                    if(b[k]=='$'){
                        b[i]=b[k]=' ';
                        break;
                    }
                }
                if(k==-1)
                    b[i]='?';
            }else{
                b[i]=' ';
            }
            i++;
        }

        printf("%s",b);
        printf("\n");
        memset(b, 0, 500);
        memset(a, 0, 500);
        fflush(stdin);
    }
    return 0;
}
int main()
{
	int len, i, h;
	char c[102];
	int a[101];
	int b[101];
	while ((cin.getline(c, 101)))
	{
		len = strlen(c);
		cout << c << endl;
		h = 0;
		for (i = 0; i <= len; i++) a[i] = -1;
		memset(b, 0, sizeof(b));
		for (i = 0; i <= len - 1; i++)
		{
			switch (c[i])
			{
				case '(':
					{
						h++;
						a[h] = i;
						break;		
					}
				case ')':
					{
						if (h == 0)
						{
							b[i] = 2;	
						}
						else
						{
							a[h] = 0; 
							h--;
						}
						break;
					}
			}
		}
		for (i = 1; i <= h; i++)
		{
			if (a[i] != -1) b[a[i]] = 1;
		}
		for (i = 0; i <= len - 1; i++)
		{ 
			if (b[i] == 1) cout << '$';
			if (b[i] == 2) cout << '?';
			if (b[i] == 0) cout << ' ';
		}
		cout << endl;
	}
	
	return 0;
}
int main()
{
	char a[101];
	int left, right, pos[101], pos1[101], i;
	while (cin >> a)
	{
		left = right = 0;
		memset (pos, 0, sizeof (pos));
		cout << a << endl;
		for (i = 0; a[i] != '\0'; i++)
		{
			if (a[i] == '(')
			{
				left++;
				pos[left] = i;
			}
			if (a[i] == ')')
			{
				if (left == 0)
				{
					right++;
					pos1[right] = i;
				}
				else
				{
					pos[left] = 200;
					left--;
				}
			}
		}
		for (i = 1; i <= left; i++)
			a[pos[i]] = 1;
		for (i = 1; i <= right; i++)
			a[pos1[i]] = 2;
		for (i = 0; a[i] != '\0'; i++)
		{
			if (a[i] != 1 && a[i] != 2)
				cout << " ";
			else
			{
				if (a[i] == 1)
					cout << "$";
				else
					cout << "?";
			}
		}
		cout << endl;
	}

	return 0;
}
int main()
{
    char a[101]={0};
    char b[101];
    int i,j,k;
    int l,r;
    int len;
    while(cin>>a)
    {
                 l=0;r=0;
                 for(i=0;i<101;i++)
                 {
                                   if(a[i]==0)
                                   {
                                                len=i;
                                                break;
                                   }
                 }
                 for(i=0;i<len;i++)
                 {
                                   b[i]=' ';
                 }
                 b[len]=0;
                 for(i=0;i<len;i++)
                 {
                                   if(a[i]=='(')
                                   l++;
                                   if(a[i]==')')
                                   l--;
                                   if(l<0)
                                   {b[i]='?';l=0;}
                                   }
                 for(i=0;i<len;i++)
                 {
                                   if(a[len-i-1]==')')
                                   r++;
                                   if(a[len-i-1]=='(')
                                   r--;
                                   if(r<0)
                                   {b[len-i-1]='$';r=0;}
                                   }
                 cout<<a<<endl<<b<<endl;
                 for(i=0;i<101;i++)
                 {a[i]=0;}
    }
    return 0;
}
int main()
{
	int n;
	int som;
	char a[105];
	char b[105];
	int len;
	int i,j;
	scanf("%d", &n);
	for (som = 1; som <= n; som++){
		scanf("%s", a);
		strcpy(b, a);
		len = strlen(a);
		for (i = len-1; i >=0; i--)
		{
			if (b[i] == '(')
				b[i] = '$';
			else if (b[i] == ')')
				b[i] = '?';
			else
				b[i] = ' ';
		}
		for (i = len - 1; i >= 0; i--)
		{
			if (b[i] == '$')
			{
				for (j = i + 1; j < len; j++)
				{
					if (b[j] == '?')
					{
						b[i] = ' ';
						b[j] = ' ';
						break;
					}
				}
			}
		}
		printf("%s\n%s\n", a, b);
	}
}
int main()
{
	int n,l;
	char c[1000][105]={0};
    int k;
	int a[105]={0};
	scanf("%d",&n);
	int i,j;
	for(i=0;i<n;i++)
	{
		scanf("%s",c[i]);
	}
	for(i=0;i<n;i++)
	{
		for(j=0;j<105;j++)
		{
			a[j]=0;
		}
		l=strlen(c[i]);
		printf("%s\n",c[i]);
		for(j=l-1;j>=0;j--)
		{
			if(c[i][j]=='(')
			{
				for(k=j+1;k<l;k++)
				{
					if(c[i][k]==')')
					{
						c[i][k]=0;
						c[i][j]=0;
						break;
					}
				}
				if(k==l)
				{
					c[i][j]=0;
					a[j]=1;
				}
			}
		}
		for(j=0;j<l;j++)
		{
			if(c[i][j]==')')
				a[j]=2;
		}
			for(j=0;j<l;j++)
			{
				if(a[j]==1) printf("$");
				else if(a[j]==2) printf("?");
				else printf(" ");
			}
			printf("\n");
	}


    return 0;
}
int main()
{
	char str[101];
	int temp;
	while(cin.getline(str,101,'\n'))
	{
		cout<<str<<endl;
		int k,i,s=0,t=0;
		char result[101];
		int left[101];
		memset(result,' ',sizeof(result));
		k=strlen(str);
		int p=0;
		for(i=0;i<k;i++)
		{
			if(str[i]=='(')
			{
				p++;
				left[s]=i;
				temp=s;
				s++;
			}
			if((str[i]==')')&&(p==0))
				result[i]='?';
			if((str[i]==')')&&(p!=0))
			{
				p--;
				left[temp]=-1;
				do
				{
					temp--;
				}
				while(left[temp]==-1);
			}
		}
		for(i=0;i<s;i++)
		{
			if(left[i]==-1)
				continue;
			else
				result[left[i]]='$';
		}
		for(i=0;i<k;i++)
			cout<<result[i];
		cout<<endl;
	}
	return 0;
}
int i;
char x[101];
char y[101];
void f() {
	int num = 0;
	int k[101] = {0};
	memset(y, ' ', 101);
	int len = strlen(x);
	for (i = 0; i < len; i++) {
		if (x[i] == '(') {
			y[i] = '$';
			num = num + 1;//num?????????
			k[num] = i;//?????????

		}
		if (x[i] == ')') {
			if (num > 0) {
				y[k[num]] = ' ';
				num = num - 1;//?????????
			} else
				y[i] = '?';
		}
	}
	for (i = 0; i < len; i++) {
		cout << y[i];//??
	}
	cout << endl;
}

int main() {
	while(cin >> x){
		cout << x << endl;
		f();
	}
	return 0;
}
int main()
{
    int a[120];
    char s[120],s1[120];
    int i,j,k,m,n,l;
    while (1)
    {
        gets(s);
        if (strcmp(s,s1)==0) break;
        strcpy(s1,s);
        memset(a,0,sizeof(a));
        l=strlen(s);        
        for (i=0;i<l;i++)
        {
        if (s[i]=='(') a[i]=1;
        if (s[i]==')') a[i]=-1;
        }
        
        for (i=0;i<l;i++)
        {
            if ((s[i]=='(')&&(a[i]!=0))
            {
              j=i+1;
              while ((a[j]==0)&&(j<l)) j++;
              if ((s[j]==')')&&(a[j]!=0)) 
              {
                a[i]=0;a[j]=0;
              }
            }
            if ((s[i]==')')&&(a[i]!=0))
            {
              j=i-1;
              while ((a[j]==0)&&(j>0)) j--;
              if ((s[j]=='(')&&(a[j]!=0)) 
              {
                a[i]=0;a[j]=0;
              }
            } 
        }
        printf("%s\n",s);
        for (i=0;i<l;i++) 
        {
            if (a[i]==1) printf("$");
        else if (a[i]==-1) printf("?"); 
        else printf(" ");
        }                            
        printf("\n");
        }
       
        return 0;
}