semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
char a[110];
void match(int l)
{
    if(a[l]=='\0') return;
    int j;
    if(a[l]==')')
        {
            for(j=l;j>=0;j--)
            {
                if(a[j]=='(')
                   {
                       a[l]=' ';
                       a[j]=' ';
                       break;
                   }
                a[l]='?';
            }
            l++;
            match(l);
        }
    else
    {
        l++;
        match(l);
    }
}
int main()
{
    int i;
    for(i=0;i<110;i++)
    a[i]='\0';
    while(cin.getline(a,101))
    {
        cout<<a<<endl;
        for(i=0;a[i]!='\0';i++)
        {
            if(a[i]!='('&&a[i]!=')')
            a[i]=' ';
        }
        match(0);
        for(i=0;a[i]!='\0';i++)
        {
            if(a[i]=='(')
               a[i]='$';
        }
        for(i=0;a[i]!='\0';i++)
        cout<<a[i];
        cout<<endl;
        for(i=0;a[i]!='\0';i++)
        a[i]='\0';
    }
    return 0;
}
int main(int argc, char* argv[])
{
	int n,i,p,j,k,s,l;
	char a[110],b[110]={' '};
	scanf("%d",&n);
	for (k=1;k<=n;k++)
	{	
		s=0;
		scanf("%s",&a);
		l=strlen(a);
		for (i=0;i<=l-1;i++)
		{
			if (a[i]=='(')
			{
				s+=1;
				b[i]=' ';
				continue;
			}
			else if (a[i]==')')
			{
				if (s>0)
				{
					s-=1;
					b[i]=' ';
					continue;
					
				}
				else if (s==0)
					b[i]='?';
				continue;
			}
			else
				b[i]=' ';
			continue;
			
			
		}
		s=0;
		for (i=l-1;i>=0;i--)
		{
			if (a[i]==')')
			{
				s+=1;
				continue;
			}
			else if (a[i]=='(')
			{
				if (s>0)
				{
					s-=1;
					continue;
					
				}
				else if (s==0)
					b[i]='$';
				continue;
			}
		}
		
		for (j=0;j<=l-1;j++)	
		{
			printf("%c",a[j]);
		}
		
		printf("\n");		
		for (j=0;j<=l-1;j++)	
		{
			printf("%c",b[j]);
		}
		printf("\n");	
		
	}


return 0;
}
int main(){
	int n,i,j,k,len,e;
	char s[102];
	scanf("%d",&n);
	for(k=0;k<n;k++)
	{
		scanf("%s",&s);
		len=strlen(s);
		printf("%s\n",s);
		for(j=0;j<len;j++){
			if(s[j]!='(' && s[j]!=')'){s[j]=' ';}
		}
		for(i=len-1;i>=0;i--){
			if(s[i]=='('){
				for(e=i+1;e<len;e++){
					if(s[e]==')'){
						s[i]=' ';s[e]=' ';break;}
				}
			}
		}
		for(j=0;j<len;j++){
			if(s[j]=='('){s[j]='$';}
			if(s[j]==')'){s[j]='?';}
		}
        printf("%s\n",s);
	}
	return 0;
}
char a[101];
int c[101];
void match(int i,int len){int k = i + 1;
                  if(c[i]!=0){ while(k<len){if(a[k]=='('&&c[k]==1){match(k,len);}
                                  if(a[k]==')'&&c[i]==1&&c[k]==-1){c[i] = 0;c[k] = 0;}
                                  k++;}}} 
                                  
                                  
main(){int n;
       scanf("%d",&n); 
       for(int i=0;i<n;i++){
               scanf("%s",&a);
               int len = strlen(a);
               for(int j=0;j<len;j++){
                       if(a[j]=='('){c[j]=1;}
                       else if(a[j]==')'){c[j]=-1;}
                       else {c[j]=0;}}
               for(int j=0;j<len;j++){if(c[j]==1){for(int k=j+1;k<len;k++){if(c[k]==1)break;
                                                                            if(c[k]==-1){c[k]=0;c[j]=0;j=-1;break;}}}}
               printf("%s\n",a);
               for(int j=0;j<len;j++){if(c[j]==1)printf("$");
                                       if(c[j]==-1)printf("?");
                                      if(c[j]==0)printf(" ");}
                                      printf("\n");}
            
}
int main()
{
    char zfc[105];
    char sign[105];
    char present[105];
    while(scanf("%s",zfc)>0)
    {
        //scanf("%s",zfc);
        strcpy(sign,zfc);
        strcpy(present,zfc);
        int left=0,right=0;
        int m=strlen(zfc);
        for(int i=0;i<m;i++)
        {
            if(zfc[i]=='(')
            {
               left=0;
               right=0;
               for(int j=i;j<m;j++)
               {
                   if(zfc[j]=='(')
                   {
                      left++;            
                   }
                   if(zfc[j]==')')
                   {
                      left--;            
                   }
                   if(left<=0)
                   {
                      break;        
                   }    
               }
               if(left>0)
               {
                  sign[i]='$';           
               }            
            }
            if(zfc[i]==')')
            {
               left=0;
               right=0;
               for(int j=i;j>=0;j--)
               {
                   if(zfc[j]=='(')
                   {
                      right--;            
                   }
                   if(zfc[j]==')')
                   {
                      right++;            
                   }
                   if(right<=0)
                   {
                      break;         
                   }    
               }
               if(right>0)
               {
                  sign[i]='?';           
               }            
            }        
        }
        for(int i=0;i<m;i++)
        {
            if(sign[i]!='$'&&sign[i]!='?')
            {
               sign[i]=' ';                           
            }    
        }
        puts(present);
        puts(sign);    
    }
    return 0;
}
int main()
{
	char a[201],b[201],c[201];
	int l,i,m,d[201],y,j;
	while(scanf("%s",a)!=EOF)
	{
		l=strlen(a);
		strcpy(b,a);
		for(i=0;i<l;i++)
		{
			b[i]=' ';
		}
		strcpy(c,a);
loop:for(i=0;i<l;i++)
		{
			if(a[i]=='(')
			{
				for(j=i+1;j<l;j++)
				{
					if(a[j]=='(') break;
					else
					{
						if(a[j]==')')
						{
							a[i]=a[j]='a';
							goto loop;
						}
					}
				}
			}
	 }
	 for(i=0;i<l;i++)
	 {
		 if(a[i]=='(') b[i]='$';
		 if(a[i]==')') b[i]='?';
	 }
	 printf("%s\n%s\n",c,b);
	}
}
int main()
{
	/*typedef struct _Parenthesis
	{
		char ch;
		int idx;
	} Parenthesis;*/
	int LeftParenIndex[100];
	char str[101];
	while(gets(str))
	{
		int i,top=0;
		puts(str);
		for(i=0; str[i]; i++)
		{
			if(str[i] == '(')
				LeftParenIndex[top++] = i;
			else if(str[i] == ')')
			{
				if(top == 0)
					str[i] = '?';
				else
				{
					str[i] = ' ';
					str[LeftParenIndex[--top]] = ' ';
				}
			}
			else
				str[i] = ' ';
		}
		for(i=0; i<top; i++)
			str[LeftParenIndex[i]] = '$';
		puts(str);
	}
	return 0;
}
int main()
{
	int n;
	cin>>n;
	while(n--)
	{
		char s[105],a[105];
		int i,k=0,stack[105];
		memset(a,' ',sizeof(a));
		cin>>s;
		for(i=0;s[i]!='\0';i++)
			if(s[i]=='(')
				stack[k++]=-i-1;
			else if(s[i]==')')
				if(k==0 || stack[k-1]>0)
					stack[k++]=i+1;
				else
					k--;
		for(i=0;i<k;i++)
			if(stack[i]>0)
				a[stack[i]-1]='?';
			else
				a[-stack[i]-1]='$';
		a[strlen(s)]='\0';
		cout<<s<<endl
			<<a<<endl;
	}
	return 0;
}
int main()
{
	void match(char a[]);
	int signal=1;
	int i;
	char s[101],s1[101]="";
	gets(s);
	while (signal)
	{		
		match(s);
		strcpy(s1,s);
		scanf("%s",s);
		if (strcmp(s,s1)==0)
			signal=0;
	}

	return 0;
}

void match(char a[])
{
	int i,j,k,len;
	int f1=0,f2=0,f3=1;
	len=strlen(a);
	if (len!=0)
	printf("%s\n",a);
	do
	{
	  if (len!=0)
	  {
		f1=0;
		f2=0;
		f3=1;//??????
		for (i=len-1;i>=0;i--)
		{
			if (a[i]=='(')
			{
				f1=1;//????????
				for (j=i+1;a[j];j++)
				{
					if (a[j]==')')
					{
						f2=1;//??????????
						a[j]='0';
						a[i]='0';
						break;
					}
				}
				if (f2==0)//???????,a[i]?????
				{
					a[i]='1';
				}
				
			}
			if (f1==1)
				break;
		}
		if (f1==0)//???????
		{
			for (i=0;a[i];i++)
			{
				if (a[i]==')')//??????????2
				{
					a[i]='2';
				}
			}
		}
		for (i=0;a[i];i++)
		{
			if (a[i]=='('||a[i]==')')
			{
				f3=0;
				break;
			}
		}
	  }
	}while (f3==0);
	for (i=0;a[i];i++)
	{
		if (a[i]=='1')
			printf("$");
		else if (a[i]=='2')
			printf("?");
		else
			printf(" ");
	}
	printf("\n");
}
int main()
{
	char input[101]={0},initial[101];
	int found=0;//????????
	while (cin.getline(input,101))
	{
	strcpy(initial,input);
	do 
	{
		found=0;
		int i=0,location=-1;
		while (input[i])
		{
			if (input[i]=='(') 
			{
				location=i;
				found=1;
			}
			if (input[i]==')') 
			{
				found=1;
				if (location==-1) input[i]='?';
				else 
				{
					input[location]=' ';
					input[i]=' ';
					location=-1;
					break;
				}
			}
			if (input[i]!='?'&&input[i]!='$'&&input[i]!='('&&input[i]!=')') input[i]=' ';
			i++;
		}
		if (location!=-1) 
			{
				input[location]='$';
				location=-1;
			}
	}
	while (found);
	cout <<initial <<endl <<input <<endl;
	}
	return 0;
}
int main()
{
	int n,i,j,k,l;
	char a[100][120];
	scanf("%d",&n);
	getchar();
	for(i=0;i<n;i++)
	{
		gets(a[i]);
		puts(a[i]);
		k=strlen(a[i]);
		for(j=0;j<k;j++)
		{

			if(a[i][j]==')')
			{
				a[i][j]='?';
			}
			if(a[i][j]=='(')
			{
				a[i][j]='$';
			}
		}
        for(j=0;j<k;j++)
		{
			if(a[i][j]!='?'&&a[i][j]!='$')
			{
				a[i][j]=' ';
			}
		}
		for(j=0;j<k;j++)
		{
			if(a[i][j]=='?')
			{
				for(l=j;l>=0;l--)
				{
					if(a[i][l]=='$')
					{
						a[i][j]=' ';
						a[i][l]=' ';
					    break;
					}
				}
			}
		}
		for(j=0;j<k;j++)
		{
			printf("%c",a[i][j]);
		}
		printf("\n");	
	}
	return 0;
}
struct bracket  
{  
    char data[max];  
    int top;  
};  
  
int main()  
{  
    char str[max]={0}, flag[max]={0};  
    int i, len,n;  
    struct bracket *leftbracket, *rightbracket;  
  scanf("%d",&n);
while(n>0)
    {while(scanf("%s", str) != EOF)  
    {  
        //????   
        leftbracket = (struct bracket *)malloc(sizeof(struct bracket));  
        rightbracket = (struct bracket *)malloc(sizeof(struct bracket));  
        leftbracket->top = rightbracket->top = 0;  
  
        len = strlen(str);  
  
        //?????????????   
        for(i = 0; i < len; i ++)  
        {  
            switch(str[i])  
            {  
                case '(' :  
                    leftbracket->data[leftbracket->top ++] = str[i];  
                    flag[i] = ' ';  
                    break;  
                case ')' :  
                    if(leftbracket->top > 0)  
                    {  
                        flag[i] = ' ';  
                        leftbracket->top -= 1;  
                    }else  
                    {  
                        flag[i] = '?';  
                    }  
                    break;  
                default :  
                    flag[i] = ' ';  
                    break;  
            }  
        }  
  
        //?????????????   
        for(i = len - 1; i >= 0; i --)  
        {  
            switch(str[i])  
            {  
                case ')' :  
                    rightbracket->data[rightbracket->top ++] = str[i];  
                    break;  
                case '(' :  
                    if(rightbracket->top > 0)  
                    {  
                        rightbracket->top -= 1;  
                    }else  
                    {  
                        flag[i] = '$';  
                    }  
                    break;  
                default :  
                    break;  
            }  
        }  
  
        //????   
        printf("%s\n%s\n", str, flag);  
  
        //?????   
        memset(str, '\0', sizeof(str));  
        memset(flag, '\0', sizeof(flag));  
    }  
n--;}
    return 0;  
}
int main()
{
	char a[101];
	int i,j,k,len;
	while(scanf("%s",a)!=EOF)
	{
		puts(a);
		len=strlen(a);
		for(i=0;i<len;i++)
		{
			if(a[i]!='('&&a[i]!=')')
			{
				a[i]=' ';
			}
			else if(a[i]=='(')
			{
				for(j=i+1;j<len;j++)
				{
					if(a[j]=='(')
					{
						break;
					}
					else if(a[j]==')')
					{
						a[i]=' ';
						a[j]=' ';
						break;
					}
				}
			}
			else if(a[i]==')')
			{
				for(j=i-1;j>=0;j--)
				{
					if(a[j]=='(')
					{
						a[i]=' ';
						a[j]=' ';
						break;
					}
					else if(a[j]==')')
					{
						break;
					}
				}
			}
		}
		for(i=0;i<len;i++)
		{
			if(a[i]=='(')
			{
				a[i]='$';
			}
			else if(a[i]==')')
			{
				a[i]='?';
			}
		}
		puts(a);
	}
	return 0;
}
int main()
{
 int n, i, j, len, c, zb[101], fb[101];
 char a[101], s[101];
 scanf("%d", &n);
 for(i=0;i<n;i++)
 {
  scanf("%s", a);
  len=strlen(a);
  for(j=0;j<len;j++)
  {
   s[j]=a[j];
  }
  s[len] = '\0';
  for(j=0;j<len;j++)
  {
   if(s[j]!='('&&s[j]!=')')
   {
    s[j]=' ';
   }
  }
  int o=0, h=0;
  for(j=0;j<len;j++)
  {
   if(s[j]=='(')
   {
    c=j;
    zb[o]=j;
    o++;
   }
   if(s[j]==')'&& o>0)
   {
    s[j]=' ';
    s[c]=' ';
o--;
if(o > 0) c = zb[o - 1];
   }
  }
  for(j=0;j<len;j++)
  {
   if(s[j]=='(')
   {
    s[j]='$';
   }
   if(s[j]==')')
   {
    s[j]='?';
   }
  }
  printf("%s\n%s", a, s);
 printf("\n");
 }
 return 0;
}
int main()
{
    char word[105],sign[105];
    int num=0,i,len;
    while(cin.getline(word,105))
    {
           num=0;
       len=strlen(word);
    for(i=0;i<len;i++)
    sign[i]=' ';
    for(i=0;i<len;i++)
    {
           if(word[i]=='(')
              num++;
           if(word[i]==')')
           {
                  if(num>0)
                  num--;
                  else sign[i]='?';
           }
    }
    num=0;
    for(i=len-1;i>=0;i--)
    {
           if(word[i]==')')
              num++;
           if(word[i]=='(')
           {
                  if(num>0)
                  num--;
                  else sign[i]='$';
           }
    }
    sign[len]='\0';
    cout<<word<<endl;
    cout<<sign<<endl;
    }
    return 0;
}
int function(char* out,int t)
{
	int i=t;
	if(out[i]=='(')
	{
		out[i]='$';
		i++;
		while(out[i]!=')'&&out[i])
		{
			if(out[i]=='(')
			{
				i=function(out,i)+1;
				if(i==-1)return -2;
			}
			else 
			{
				out[i]=' ';
			    i++;
			}
		}
		if(out[i]==')')
		{
			out[t]=out[i]=' ';
			return i;
		}
		else return -2;
	}
	else
	{
		while(out[i]!='('&&out[i])
		{
			if(out[i]==')')
				out[i]='?';
			else
			    out[i]=' ';
			i++;
		}
		if(out [i]=='(')
			return function(out,i);
		else return -2;
	}
}



int main()
{
	char out[101];
	int n=-1;
	cin.getline(out,101);
	while(out[0])
	{
		n=-1;
		cout<<out<<endl;
		while(n!=-2)
		{
			n=function(out,n+1);
		}
		cout<<out<<endl;
		cin.getline(out,101);
	}
	return 0;
}
int main()

{
    int i,j;
	char a[101],b[101],c[101];
	for(;;)
		{
			gets(a);
			
			if(strcmp(c,a)==0) break;
			for(i=0;a[i]!='\0';i++)
				{
					if(a[i]==')')  b[i]='?';
					else if(a[i]=='(') b[i]='$';
					else b[i]=' ';
			     }
			
			for(i=0;a[i]!='\0';i++)
			{
				if(b[i]=='?') 
				{
					for(j=i;j>=0;j--)
					{
					   if(b[j]=='$') 
						  { b[i]=' ';
					       b[j]=' ';
						   break;}
					
					}
				 }
              }
			for(i=0;a[i]!='\0';i++)
				printf("%c",a[i]);
			printf("\n");
			for(i=0;a[i]!='\0';i++)    
				printf("%c",b[i]);
	       printf("\n");
			strcpy(c,a);
	}
			
			return 0;
				

	     
	
	
	
	
	}
int main()
{
    char chn[120];
    int i,l;
    int z,t;
    char a,b;
    while(scanf("%s",chn)!=-1)
    {
    l = strlen(chn);
    printf("%s\n",chn);
    while(1)
    {
      z = -1;
      t = 0;
      for(i = 0;i < l; i++)
      {
        if(z == -1 && chn[i] == '(')
           z = i;
        else if(z >= 0 && chn[i] == ')')
          {
             chn[z] = ' ';
             chn[i] = ' ';
             t ++;        
             break;
          }        
        else if(z >= 0 && chn[i] == '(')
          z = i;
      }     
      if(!t) break;
    }
    for(i = 0;i < l;i++)
    {
       if(chn[i] == '(')    
         chn[i] = '$';
       else if(chn[i] == ')')
         chn[i] = '?';
       else chn[i] = ' ';
     printf("%c",chn[i]);   
    }
    printf("\n");
  }    
  
 return 0;    
}
main()
{
    char s[101];//="12(((3))((7()888_)988((555)))))))";
    int i,l,n,x,j,r;
    int le[101]={0},ri[101]={0};
    scanf("%d",&n);
    for(x=0;x<n;x++)
    {
        for(i=0;i<100;i++)
        {le[i]=0;ri[i]=0;}
        scanf("%s",s);
        l=strlen(s);
        for(i=0;i<l;i++)
        {
            if(s[i]=='(') le[i]=1;
            if(s[i]==')') ri[i]=1;
        }
        for(i=l-1;i>=0;i--)
        {
            if(le[i]==1)
            {
                for(j=i;j<l;j++)
                {
                    if(ri[j]==1)
                    {ri[j]=0;le[i]=0;break;}
                }
            }
        }
        puts(s);
        for(i=0;i<l;i++)
        {
            if(ri[i]==1) printf("?");
            if(le[i]==1) printf("$");
            if(ri[i]==0&&le[i]==0) printf(" ");
        }
        printf("\n");
    }
}
/* Name      : ??????????? 
 * Version   : 2.0
 * Date      : 2012-11-24
 * New       : Null
 * Func&Feat : 
 * State     : Design
 */
int pairs(int,int,char text[],char match[]);
int main()
{
    for(;;)
    {
        char text[101]={0},match[101]={0};       //???text????????match?????? 
        int lgth=0;                              //???lgth??text???brkt[]????????????-1??????1? 
        gets(text);                              //??gets()?????????????????????? 
        if(text[0]==0)break;                     //???????????????????? 
        for(int i=0;i<101;i++)                   //???????text????????????? 
        {
            if(text[i]!=0)
            {
                if(text[i]=='(')match[i]='$';    //??text[]?????brkt[]???-1?match[]????'$' 
                else if(text[i]==')')match[i]='?';//??text[]?????brkt[]???1?match[]????'?' 
                else match[i]=' ';               //??text[]?????brkt[]?????0?match[]?????? 
            }
            else                                 //??text[]?????????text????? 
            {
                lgth=i;
                break;
            }
        }
        pairs(0,0,text,match);
        cout<<text<<endl<<match<<endl;
    }
    return 0;
}
int pairs(int n,int hemi,char text[],char match[])
{
    for(;;)
    {
        char c=text[n];
        if(c==0)return -1;
        if(c=='(')
        {
            int l=n;
            int r=pairs(n+1,1,text,match);
//            cout<<l<<' '<<r<<endl;
            if(r!=-1)
            {
                match[l]=match[r]=' ';
                n=r+1;
            }
            else return -1;
        }
        else if(c==')'&&hemi==1)return n;
        else n++;
    }
}
int main() {
	int n;
	cin >> n;
	for ( int m = 1; m <= n; m ++ ) {
		char str[105], str2[105];
		cin >> str;
		int stack[105];
		int len = strlen( str ), k = 0;
		for ( int i = 0; i < len; i ++ ) {
			str2[i] = ' ';
		}
		str2[len] = '\0';
		for ( int i = 0; i < len; i ++ ) {
			if ( str[i] == ')' ) {
				if ( k == 0 || stack[k - 1] > 0 ) {
					stack[k ++] = i + 1;
				}
				else k --;
			}
			else if ( str[i] == '(' ) {
				stack[k ++] = - i - 1;
			}
		}
		for ( int i = 0; i < k; i ++ ) {
			if ( stack[i] < 0 ) str2[-stack[i] - 1] = '$';
			else str2[stack[i] - 1] = '?';
		}
		cout << str << endl;
		cout << str2 << endl;
	}
	return 0;
}
int main()
{
	char a[120][102],b[120][102];
	int n,i,j,k,r,d,l,cao;
	for(i=1;i<=200;i++)
	{
		gets(a[i]);
		if (strlen(a[i])==0)
			break;
	}
    for(j=1;j<=i-1;j++)
	{
		for(k=0;k<=strlen(a[j])-1;k++)
		{
		    
			if (a[j][k]==')')
			{
				if (k==0)
				{
					l=0;
				}
				for (r=0,cao=0;r<=k-1;r++)
				{
					if (a[j][r]=='(')
					{
						for(d=r+1,l=1;d<=k-1;d++)
						{
							if (a[j][d]==')')
								l--;
							else if (a[j][d]=='(')
								l++;
						}
						if (l>0)
                            cao++;
					}
                
				}
				if (cao>0)
					b[j][k]=' ';
				else
					b[j][k]='?';
			}
			else if (a[j][k]=='(')
			{
				if (k==strlen(a[j])-1)
				{
					l=0;
				}
				for (r=k+1,cao=0;r<=strlen(a[j])-1;r++)
				{
					if (a[j][r]==')')
					{
						for(d=r-1,l=1;d>=k+1;d--)
						{
							if (a[j][d]=='(')
								l--;
							else if (a[j][d]==')')
								l++;
						}
						if (l>0)
							cao++;
					}
				}
				if (cao>0)
					b[j][k]=' ';
				else
					b[j][k]='$';
			}
			else
				b[j][k]=' ';
		}
	}
	for(j=1;j<=i-1;j++)
	{
		printf("%s\n%s\n",a[j],b[j]);
	}
	return 0;
}
int main (void)
{
	char a[100];
	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=L-1;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==L)
				{
					a[i]='0';
					ans[i]='$';
					break;
				}
			}
		}
	}
	for(int i=0;i<L;i++)
	{
		if(a[i]==')')
		{
			ans[i]='?';
		}
	}

	printf("%s\n",ans);
	}
	return 0;
}
int main()
{
	char a[101]={0}, b[101]={0};
	int lef[101], r[101], i=0, j=0;
	do{
		cin.get(a,101);
		cin.get();
		if(a[0]=='\0')
			break;
		int len=strlen(a);
		for(i=0; i<len; i++)
		{
			if(a[i]=='(')
				b[i]='$';
			else if(a[i]==')')
				b[i]='?';
			else 
				b[i]=' ';
		}
		for(i=0; i<len; i++)
			if(b[i]=='?')
				for(j=i; j>=0; j--)
					if(b[j]=='$')
					{
						b[j]=' ';
						b[i]=' ';
						break;
					}
		for(i=0; i<len; i++)
			cout<<a[i];
		cout<<endl;
		for(i=0; i<len; i++)
			cout<<b[i];
		cout<<endl;
	}while(1);
	return 0;
}
//*****************************************
//*   ??????                        *
//*   ??????                        *
//*   ?????2011?12?17?            *
//*****************************************


int main()
{
	int i, j, n;
	char a[200];
	while(cin.get(a, 200))//???????
	{
		n = strlen(a);//????????
		for(i = 0; i < n; i ++)
			cout << a[i];//?????????
		cout << endl;
		for(i = 0; i < n; i ++)
		{
			if(a[i] == '(')
				a[i] = '$';//?????????$
			else if(a[i] == ')')
			{
				a[i] = '?';//??????????
				for(j = i - 1; j >= 0; j --)//???????????
				{
					if(a[j] == '$')//?????????
					{
						a[i] = ' ';
						a[j] = ' ';//?????????????
						break;
					}
				}
			}
			else
				a[i] = ' ';//??????????
		}
		for(i = 0; i < n; i ++)
			cout << a[i];//?????????
		cout << endl;
		cin.get();//????????????
	}
	return 0;
}
void main()
{
	int b[101],t,n,i,j;
	char a[101];
	while(gets(a))
	{
		for(i=0;i<101;i++)
			b[i]=0;
		n=strlen(a);
		for(i=0;i<n;i++)
		{
			if(a[i]=='(')
			{
				t=-1;
				for(j=i+1;j<n;j++)
				{
					if(a[j]=='(')
					{	t--;}
					if(a[j]==')')
					{	t++;}
					if(t==0)break;
				}
				if(t<0)b[i]=1;
			}
			if(a[i]==')')
			{
				t=-1;
				for(j=i-1;j>=0;j--)
				{
					if(a[j]=='(')
					{	t++;}
					if(a[j]==')')
					{	t--;}
					if(t==0)break;
				}
				if(t<0)b[i]=2;
			}
		}
		for(i=0;i<n;i++)
		printf("%c",a[i]);
		printf("\n");
		for(i=0;i<n;i++)
		{
		if(b[i]==0)printf(" ");
		if(b[i]==1)printf("$");
		if(b[i]==2)printf("?");
		}
		printf("\n");
	}
}
int match (int);
int count (int);
int match (int,int,int,int);
char a[50][105],b[50][105]={0};
int num[50]={0};
int main ()
{
	for (int i=0;;i++){
		cin.getline (a[i],101);
		count (i);
		match (i);
		cout<<a[i]<<endl;
		cout<<b[i]<<endl;
	}
	return 0;
}
int count (int m)	//???????
{
	for (int i=0;a[m][i]!=0;i++)
		num[m]++;
	return 0;
}

int match (int k)	//??????
{
	for (int i=0;i<num[k];i++){
		if (a[k][i]=='(') b[k][i]='$';
		else if (a[k][i]==')') b[k][i]='?';
		else b[k][i]=' ';
	}
	while (1){
		int flag=-1,judge=0;
		for (int i=0;i<num[k];i++){
			if (b[k][i]=='$' && b[k][i+1]=='?')	{  
			b[k][i]=' '; b[k][i+1]=' ';
			judge=1;break;
		}
		else if (b[k][i]=='$' && b[k][i+1]==' ')
			flag=i;
		else if (b[k][i]=='?' && flag>=0)	
		{	
			b[k][i]=' '; b[k][flag]=' ';
			 flag=-1;judge=1;break;
		}
			}
		if (judge==0)
			break;}
	return 0;
		
	}
char st[100];
char st2[100];
int main()
{
	memset(st,0,100);
	memset(st2,0,100);
	while(cin>>st)
	{
		int left=0,right=0;
		int len=strlen(st);
		for(int i=0;i<len;i++)
		{
			if(st[i]=='(')
				left++;
			if(st[i]==')')
				right++;
			if(left<right)
			{
				st2[i]='?';
				right--;
			}
		}
		left=0;
		right=0;
		for(int j=len-1;j>=0;j--)
		{
			if(st[j]=='(')
				left++;
			if(st[j]==')')
				right++;
			if(left>right)
			{
				st2[j]='$';
				left--;
			}
		}
		for(int i=0;i<len;i++)
		{
			if(st2[i]!='$'&&st2[i]!='?')
				st2[i]=' ';
		}
		cout<<st<<endl;
		cout<<st2<<endl;
		memset(st,0,100);
		memset(st2,0,100);
	}
	return 0;
}
void change(char b[],int n,int m)
{
	if(b[m]!=')'&&m<n)//????
	{
		change(b,n,m+1);
	}
	if(b[m]==')'&&m<n)
	{
		int i;
		for(i=m;i>=0;i--)
		{
			if(b[i]=='(')
			{
				b[i]='A';
				b[m]='A';
				break;
			}
		}
		change(b,n,m+1);
	}
}
int main()
{
	char a[200];
	cin>>a;
	getchar();
	while(a[0]!=0)
	{
    int num,j;
	num=strlen(a);
	cout<<a<<endl;
	change(a,num,0);
	for(j=0;j<num;j++)//?????
	{
		if(a[j]=='(')a[j]='$';
		else
			{if(a[j]==')')
			a[j]='?';
            else
			a[j]=' ';
		}
	}
	cout<<a<<endl;
	cin.getline(a,200);
   }
	return 0;
}