semeru/Code-Code-CloneDetection-POJ104 huggingface dataset:
char num2[110] = {'\0'};

int left(char num[110], int point, int sum, int l) {   // check if it is a wrong '(' 
	if(point == l) { // finish the function
		if(num[point] == '(') {
			num2[point] = '$';
			return 0;
		}
		if(num[point] == ')') {
			sum = 1;
			return sum;
		}
		if(num[point] != '(' && num[point] != ')') return 0;
	}
	else {
		int k = left(num, point + 1, sum, l);
		if(num[point] == '(' && k == 0) {
			num2[point] = '$';
			return 0;
		}
		if(num[point] == '(' && k != 0) {
			sum = k - 1;
			return sum;
		}
		if(num[point] == ')') {
			sum = k + 1;
			return sum;
		}
		if(num[point] != '(' && num[point] != ')')
			return k;
	}
}

int right(char num[110], int point, int sum, int l) {   // check if it is a wrong '(' 
	if(point == l) { // finish the function
		if(num[point] == ')') {
			num2[point] = '?';
			return 0;
		}
		if(num[point] == '(') {
			sum = 1;
			return sum;
		}
		if(num[point] != '(' && num[point] != ')') return 0;
	}
	else {
		int k = right(num, point - 1, sum, l);
		if(num[point] == ')' && k == 0) {
			num2[point] = '?';
			return 0;
		}
		if(num[point] == ')' && k != 0) {
			sum = k - 1;
			return sum;
		}
		if(num[point] == '(') {
			sum = k + 1;
			return sum;
		}
		if(num[point] != '(' && num[point] != ')')
			return k;
	}
}


int main() {
	char num[110] = {'\0'};
	while(cin >> num) {
	int l = strlen(num);   // store the total length of the num
	cout << num << endl;
	for(int i = 0; i < l; i++) // build a new num to show the wrong '(' and ')'
		num2[i] = ' ';
	num2[l] = '\0';
	left(num, 0, 0, l - 1);
	right(num, l - 1, 0, 0);
	cout << num2 << endl;
	}
	
	return 0;
}
int main(){
char chuan[101];
while(scanf("%s",chuan)!=EOF){
    printf("%s\n",chuan);
    int i,j,k,p;
    int sig=0;
    p=strlen(chuan)-1;
    for(i=p;i>=0;i--){
        if(chuan[i]==')') sig++;
        if((chuan[i]!='(')&&(chuan[i]!=')')) chuan[i]=' ';
        if((sig!=0)&&(chuan[i]=='(')){
            chuan[i]=' ';sig=sig-1;
            for(j=i+1;j<=p;j++)
                if(chuan[j]==')'){
                    chuan[j]=' ';break;}}}
    for(i=0;i<=p;i++){
        if(chuan[i]=='(') printf("$");
        else if(chuan[i]==')') printf("?");
        else printf(" ");}
    printf("\n");
}
return 0;
}
int main()
{
    int i,n=0,k,p,count1=0,count2=0;
    char a[100][1000],b[1000][1000];
    for(i=0;i<100;i++)
    {
                      for(k=0;k<100;k++)
                      {
                                      b[i][k]=' ';
                      }
    }
    for(i=0;i<100;i++)
    {
                      scanf("%s",a[i]);
                      n++;
                      if(a[i][0]=='\0')
                      break;
    }
    for(i=0;i<n;i++)
    {
                      printf("%s\n",a[i]);
                      for(k=0;k<strlen(a[i]);k++)
                      {
                                                 if(a[i][k]==')')
                                                 {
                                                      for(p=k-1;p>=0;p--)
                                                      {
                                                                         if(a[i][p]=='('){
                                                                                          a[i][p]='.';
                                                                                          a[i][k]='.';
                                                                                          break;
                                                                                          }
                                                                         else if(a[i][p]==')'){
                                                                              break;
                                                                              }
                                                      }
                                                 } 
                      }
                      for(k=0;k<strlen(a[i]);k++)
                      {
                                                 if(a[i][k]=='(')
                                                 b[i][k]='$';
                                                 else if(a[i][k]==')')
                                                 b[i][k]='?';
}
                      b[i][strlen(a[i])]='\0';
                      printf("%s\n",b[i]);
    }
    return 0;
}
int main()
{
    char a[A];
	int i,j,n;
    while(scanf("%s",a)!=EOF)
	{
        printf("%s\n",a);
		n=strlen(a);
		for(i=0;i<n;i++)
		{
			if(a[i]==')')
			{
				for(j=i-1;j>=0;j--)
				{
					if(a[j]=='(')
					{
                          a[j]=0;
						  a[i]=0;
						  break;
					}
				}
			}
		}
		for(i=0;i<n;i++)
		{
			if(a[i]=='(') {printf("$");continue;}
			if(a[i]==')') {printf("?");continue;}
			printf(" ");
			
		}
		printf("\n");
	}
	return 0;
}
int main()
{
    char str[1001];int n;
    while(~scanf("%s",str))
    {
        n=strlen(str);
        printf("%s",str);
        printf("\n");
        for(int i=1;i<n;i++)
        {
            if(str[i]==')')  
            {
                for(int j=i-1;j>=0;j--) 
                {if(str[j]=='(') {str[i]=' ';str[j]=' ';break;}}
            }
        }
        for(int i=0;i<n;i++)
        {
            if(str[i]=='(') str[i]='$';
            else if(str[i]==')') str[i]='?';
            else str[i]=' ';
        }
        printf("%s",str);
        printf("\n");
    }
}
int main()
{
	char a[101];
	int i, j, len;
	while (cin >> a)
	{
		cout << a << endl;
		len = strlen(a);
		for (i = 1; i < len; i++)
		{
			for (j = 0; j < len - i; j++)
			{
				if (a[j] == '(' && a[j + i] == ')')
				{
					a[j] = ' ';
					a[j + i] = ' ';
				}
				if (a[j] != '(' && a[j] != ')')
				{
					a[j] = ' ';
				}
			}
		}
		for (i = 0; i < len; i++)
		{
			if (a[i] == '(')
			{
				a[i] = '$';
			}
			if (a[i] == ')')
			{
				a[i] = '?';
			}
		}
		cout << a << endl;
	}
	return 0;
}
int j=1;
int main()
{ char a[101];
 a[0]=0;
l: scanf("%s",a);
 if(a[0]==0) return 0;
 else
   printf("%s\n",a);
 int r,i,k;
 r=strlen(a);
 for(i=r-1;i>=0;i--)
  {if(a[i]!='('&&a[i]!=')') a[i]=' ';
   else if(a[i]=='(')
    {for(k=i;k<=r-1;k++){ if(a[k]==')') {a[i]=' ';a[k]=' ';break;}}}
   }
  for(i=0;i<=r-1;i++)
   {if(a[i]=='(') a[i]='$';
    else if(a[i]==')') a[i]='?';
    }
  printf("%s\n",a);
  return main();

   
}
int main()
{
	char str[101];
	int i , j , a[101] , len , count;
	while (cin.getline(str , 101))
	{
		count = 0;
		len = strlen(str);
		for (i = 0 ; i  <= len -1 ; i++)
		{
			cout << str[i];
		}
		cout << endl;
		for (i = 0 ; i <= len - 1 ; i++)
		{
			if (str[i] == ')')
			{
				count++;
				a[count] = i;
			}
		}
		for (i = 1 ; i <= count ; i++)
		{
			for (j = a[i] - 1 ; j >= 0 ; j--)
			{
				if (a[i] == 0)
				{
					str[a[i]] = '?';
				}
				if (str[j] == '(')
				{
					str[j] = ' ';
					str[a[i]] = ' ';
					break;
				}
			}
			if (str[a[i]] != ' ')
			{
				str[a[i]] = '?';
			}
		}
		for (i = 0 ; i <= len -1 ; i++)
		{
			if (str[i] == '(')
			{
				str[i] = '$';
			}
		}
		for (i = 0 ; i <= len -1 ; i++)
		{
			if ((str[i] != ' ')&&(str[i] != '?')&&(str[i] != '$'))
			{
				str[i] = ' ';
			}
		}
		for (i = 0 ; i <= len -1 ; i++)
		{
			cout << str[i];
		}
		cout << endl;
	}
	return 0;
}
char a[200],b[200];
int l;
void f36(int i)
{
	int j;
	for(j=i+1;j<l;j++)
	{
		if(b[j]!=32)
		{
			if(b[j]==63) {b[j]=32;b[i]=32;}
			break;
		}
	}
}
int g(void)
{
	gets(a);
	if(a[0]==0) return 0;
	else return 1;
}
void k(void)
{
	l=strlen(a);
	int i,n=0,p;
	for(i=0;i<l;i++)
	{
		b[i]=32;
		if(a[i]==40) {b[i]=36; n=n+1;}
		if(a[i]==41) {b[i]=63; n=n+1;}
	}
	for(p=1;p<=n;p++)
	for(i=0;i<l;i++)
	{
		if(b[i]==36) f36(i);
	}
	printf("%s\n",a);
	for(i=0;i<l;i++) printf("%c",b[i]);
	printf("\n");
	a[0]=0;
}
int main()
{
	int n=1;
	while(n==1) 
	{
		n=g();
		if(n==0) break;
		k();
	}
	return 0;
}
char investigate(char a[])
{
	int i,j,k,n;
	int p1=0,p2=0,w,t=0,t1=0;
	n=strlen(a);
	char b[100];
	for(i=0;i<n;i++)
	{
		if(a[i]=='(') p1++;
		if(a[i]==')') p2++;
	}
    
	for(i=0;i<n;i++)
	{
		if((i==(n-1))&&(t>t1))
		{
		  i=-1;t1=t;goto loop;
		}else
		if(a[i]!='('){b[i]==' ';continue;}
		else
		{
		  for(j=i+1;j<n;j++)
		  {
			  if(a[j]=='('){i=j-1;break;}
			  else if(a[j]==')')
			  {
				  a[i]='[';a[j]=']';t++;
				  break;
			  }
		  }
		}
		loop:;
		
	}

	for(i=0;i<n;i++)
	{
		if(a[i]=='(') b[i]='$';
		else if(a[i]==')') b[i]='?';
		else b[i]=' ';

	}
	for(i=0;i<n;i++)
	{
		if(a[i]=='[')a[i]='(';
		if(a[i]==']')a[i]=')';

	}
	
    for(i=0;i<n;i++)
		printf("%c",a[i]);
		printf("\n");
	for(i=0;i<n;i++)
		printf("%c",b[i]);

	return 0;
}

int main()
{
	int i,j;
	char a[100];
	while(gets(a))
	{
		investigate(a);
		printf("\n");

		
	}



}
int main()
{
	char s[101];
	int i,l,j;
	while(gets(s)!=0)
	{    puts(s);
printf("\n");
		l=strlen(s);
		for(i=0;i<l;i++)
		{
			if(s[i]==')')
			{
				for(j=i-1;j>=0;j--)
				{
					if(s[j]=='(')
						break;
				}
				if(j>=0)
				{
					s[i]=' ';
					s[j]=' ';
				}
			}
		}
		for(i=0;i<l;i++)
		{
			if(s[i]=='(')
				s[i]='$';
			else if(s[i]==')')
				s[i]='?';
			else s[i]=' ';
		}
		puts(s);
		printf("\n");
	}
	
	return 0;
}
int find(char s[], int pos)
{
	int i, p=0, q=0;
	if (pos<0)
		return 0;										//?????
	if (s[pos]==')')
		for (i=pos-1; i>=0; i--)
		{
			if (s[i]=='(')
				p++;
			if (s[i]==')')
				q++;									//??????????????
			if ((s[i]=='(')&&(p-q==1))
			{
				s[i]=' ';
				s[pos]=' ';
				break;									//?????????????
			}
		}
	find(s,pos-1);										//??????
	return 0;
}
int main()
{
	char s[101], ss[101], ans[101];
	int i, n;
	while (true)
	{
		cin >> s;
		if (!cin)
			break;
		strcpy(ss,s);
		memset(ans,' ',sizeof(ans));
		n=strlen(s)-1;									//??????
		find(s,n);										//???????
		for (i=0; i<=n; i++)
		{
			if (s[i]=='(')
				ans[i]='$';
			if (s[i]==')')
				ans[i]='?';								//????????????
		}
		ans[n+1]='\0';
		cout << ss << endl;
		cout << ans << endl;							//????????
	}
	return 0;											//main???????0
}
int main()
{
    char a[105];
int mm;scanf("%d",&mm);
while(mm--)
{
    while(gets(a))
    {
        int n=strlen(a);int i=0,j,b[105];
        for(i=0;a[i];i++)
        {
            if(a[i]=='('){b[i]=1;}
            else if(a[i]==')'){b[i]=-1;}
            else b[i]=0;
        }//first step:change char a[] to int b[].
        for(i=0;i<n;i++)
        {
            if(b[i]==-1)
            {
                for(j=i;j>=0;j--)
                {
                    if(b[j]==1)
                    {
                        b[i]=0;b[j]=0;break;
                    }
                }

            }
        }
        puts(a);printf("\n");
        for(i=0;i<n;i++)
        {
            if(b[i]==0)
                printf(" ");
            else if(b[i]==1)
                printf("$");
            else printf("?");
        }

        printf("\n");




    }
}
    return 0;
}
int main()
{
	char ch[101];
	int i,a[101],k,j;
	for(i=0;i<=100;i++)
		a[i]=1;
	while(scanf("%s",ch)!=EOF)
	{
		puts(ch);
		i=0;
		do
		{
			if((ch[i]>='a' && ch[i]<='z') || (ch[i]>='A' && ch[i]<='Z'))
				a[i]=0;
			if(ch[i]==')')
			{
				for(k=i-1;k>=0;k--)
				{
					if((ch[k]=='(') && a[k]==1)
					{
						a[k]=0;
						a[i]=0;
						break;
					}
				}
			}
			i++;
		}
		while(ch[i]!='\0');
		j=i-1;
		for(i=0;i<=j;i++)
		{
			if(a[i]==0)
				printf(" ");
			else
			{
				if(ch[i]=='(')
					printf("$");
				else
					printf("?");

			}
		}
		printf("\n");
		for(i=0;i<=100;i++)
		{
			a[i]=1;
			ch[i]='a';
		}

	}
	return 0;
}
int k,m=0;
char a[100]={'\0'};
void pipei(int m,char a[])
{  
   int i,j;
 for(i=m;i<=k-1;i++)
  {
    if(a[i]==')') {break;}
    if(a[i]!='('&&a[i]!=')') {a[i]=' ';}
  }
  m=i+1;
 for(j=i;j>=0;j--)
  {
    if(i==k&&a[k-1]!=')') break;
    if(a[j]=='(') {a[j]=' ';a[i]=' ';break;}
  }
  if(m<=k-1) pipei(m,a);
}
int main()
{    
  char w;
  while(cin>>a)
   {  
     k=strlen(a);
      int i,j;          
     cout<<a<<endl;
      pipei(0,a);
     for(i=0;i<=k-1;i++)
       {
          if(a[i]=='(')
           a[i]='$';
          if(a[i]==')')
           a[i]='?';
       }
       for(i=0;i<=k-1;i++)
       cout<<a[i];
       cout<<endl;
      for(i=0;i<100;i++)
      { a[i]='\0';} 
   }
  
  return 0;
}
char a[200];
void match(char a[])
{
	
	int s;
	s=strlen(a);
	if(s==0) return;
	int i,j;
	int check=0;
	for(i=0;i<s-1;i++)
	{
		if(a[i]=='(')
		{
			for(j=i+1;j<s&&a[j]==' ';j++);
			if(j<s)
			{
				if(a[j]==')')
				{
					check=1;
					break;
				}
			}
		}
	}
	if(check==1)  
	{
		a[i]=' ';
		a[j]=' ';
		match(a);
	}
	if(check==0)
		return;
}
int main()
{
	
	int n;
	scanf("%d",&n);
	char temp;
	scanf("%c",&temp);
	while(n--)
	{   
		
		gets(a);
		puts(a);
        int s;
	    s=strlen(a);
		int i;
		for(i=0;i<s;i++)
			if(a[i]!='('&&a[i]!=')') a[i]=' ';
		match(a);
		for(i=0;i<s;i++)
		{
			if(a[i]=='(') a[i]='$';
			else if(a[i]==')') a[i]='?';
		}
		puts(a);
	}
	return 0;
}
//????????????????
//????????????
//???????????????? time limit ????
char b[110];
char a[110];
int opr(int i)  //bug1???????
{
	int j;
	for(j=i-1;j>=0;j--)
	{
		if(b[j]=='$')
		{
			b[j]=' ';
			b[i]=' ';
			break;
		}
	}
	return 0;
}
void tag(char*a, char*b)  //????2??????
{
	int l=strlen(a);
	int i;
	for(i=0;i<l;i++)
	{
		if(a[i]=='(')
			b[i]='$';
		else
		    if(a[i]==')')
			    b[i]='?';
		    else
			    b[i]=' ';
	}
	b[l]='\0';
}
int main()
{
	int i,l;
	while(scanf("%s",a)!=EOF)  //??
	{
		l=strlen(a);
		printf("%s\n",a);   //??
		tag(a,b);
		for(i=0;i<l;i++)
		{
			if(b[i]=='?')     //????
			{
				opr(i);
			}
		}
		printf("%s\n",b);
	}
	return 0;
}
int main()
{
     void match(char *ps, char *pf, int len);
     char a[N] = {'\0'};
     while( scanf("%s", a) == 1) {
          char b[N] = {'\0'};
          match(a, b, strlen(a));
     }
     return 0;
}

void match(char *ps, char *pf, int len)
{
     int i, flag, last, isleft, isright;
     char str[N] = {'\0'}, strf[N] = {'\0'};
     strcpy(strf, pf);
     strcpy(str, ps);
     for(i = 0; i < len; i++) {
          if(*(str + i) == '(')
               *(strf + i) = -1;
          else if( *(str + i) == ')' )
               *(strf + i) = +1;
     }

     do {
          flag = 0;
          last = 0;
          isleft = 0;
          isright = 0;
          for(i = 0; i < len; i++) {
               if (*(strf + i) == 1 && flag == 1) {
                    *(strf + i) = 0;
                    *(strf + last) = 0;
                    flag = 0;
                    isleft = 1;
               } else if(*(strf + i) == -1) {
                    flag = 1;
                    last = i;
                    isright = 1;
               }
          }
     } while(isleft && isright);
     printf("%s\n", ps);
     for(i = 0; i < len; i++) {
          if (*(strf + i) == -1)
               printf("$");
          else if (*(strf + i) == +1)
               printf("?");
          else
               printf(" ");
     }
     printf("\n");
}
int main()
{
	int n, i, left[102], len, j, k; 
	char *p = NULL; 
	char str[102]; 
	cin >> n; 
	for ( i = 1; i <= n; i++ )
	{
		k = 0; 
		cin >> str;
		cout << str << endl;
		len = strlen(str); 
		p = str; 
		for ( ; p < str + len; p++ )
		{
			if ( *p != '(' && *p != ')' )
				*p = ' '; 
		} 
		for ( j = 0; j < len; j++ )
		{
			if ( str[j] == '(' )
			{
				k++; 
				left[k] = j; 
			}
			if ( str[j] == ')' )
			{
				if ( k == 0 )
					str[j] = '?'; 
				else
				{
					left[k] = -1; 
					k--; 
				}
			}
		}
		if ( k == 0 )
		{
			for ( j = 0; j < len; j++ )
			{
				if ( str[j] != '?' )
					cout << " "; 
				else
					cout << str[j]; 
			}
			cout <<endl; 
		}
		else
		{
			for ( ; k > 0; k-- )
				str[left[k]] = '$'; 
			for ( j = 0; j < len; j++ )
			{
				if ( str[j] != '?' && str[j] != '$' )
					cout << " "; 
				else
					cout << str[j]; 
			}
			cout << endl; 
		}
	}
	return 0; 
}
int main()
{
	char c[110],s[110];
	int left,i;
	int leftp[110]={0};
	while (cin >>c)
	{
		left=0;i=0;
		memset(leftp,0,110*sizeof(int));
		memset(s,0,110*sizeof(char));
		while (c[i]!='\0')
		{
			if (c[i]=='(')
			{
				left++;leftp[left]=i;
			}
			else
				if (c[i]==')')
				{
					if (left==0)
						s[i]='?';
					else
					{
						left--;
					}
				}
			i++;
		}
		if (left>0)
		    for (i=1;i<=left;i++)
				s[leftp[i]]='$';
		cout <<c<<endl;
		for (i=0;i<strlen(c);i++)
		    if ((s[i]=='?')||(s[i]=='$'))
				cout <<s[i];
			else
				cout <<' ';
		cout <<endl;
	}
	return 0;
}
char in[102];
int lenth;
void match(int n)
{
     for(int i=0;i<lenth;i++)
     {
             if(in[i]=='('&&in[i+n]==')')
             {
                  in[i]=' ';
                  in[i+n]=' ';
             }
     }
     if(n<=lenth-2)
     {
     match(n+1);
     }
}
void print(char in[])
{
     for(int i=0;i<lenth;i++)
     {
             if(in[i]=='(')        
                  in[i]='$';
             else if(in[i]==')')   
                  in[i]='?';
             else                 
                  in[i]=' ';
     }
     cout<<in<<endl;
}
int main()
{
    while(cin>>in)
    {
           cout<<in<<endl; 
           lenth=strlen(in);
           match(0);
           print(in);
    }
    return 0;
}
void Match(int input_len);
char input[128];
char tmp_input[128];
int main()
{
	//freopen("test.txt","r",stdin);
	while(scanf("%s",input)!=EOF)
	{
		strcpy(tmp_input,input);
		int input_len=strlen(input);
		Match(input_len);
		for(int i=0;i<=input_len-1;i++)
		{
			if(input[i]=='(')
			{
				input[i]='$';
			}
			else if(input[i]==')')
			{
				input[i]='?';
			}
			else
			{
				input[i]=' ';
			}
		}
		printf("%s\n",tmp_input);
		printf("%s\n",input);
	}
	return 0;
}
void Match(int input_len)
{
	int cur_left=-1,cur_right=-1;
	for(int i=0;i<=input_len-1;i++)
	{
		if(input[i]=='(')
		{
			cur_left=i;
			continue;
		}
		if(input[i]==')')
		{
			if(cur_left!=-1)
			{
				input[cur_left]=' ';
				input[i]=' ';
				cur_left=-1;
				i=-1;
				continue;
			}
		}
	}
}
int a;
char s1[101],s2[101];
int main()
{
    int n,l,i,j;
    scanf("%d",&n);
    for(l=0;l<n;l++)
    {
         memset(s1,0,101);
         memset(s2,0,101);
         scanf("%s",s1);
         a=strlen(s1);
         int k[100]={0},b=0;
         for(i=0;i<a;i++)
         {
              if(s1[i]=='('){
              for(j=i;j<a;j++)
              {
                  if(s1[j]=='(') k[i]++;
                  else if(s1[j]==')')  k[i]--;
              }     }   
         }
         for(i=a-1;i>=0;i--)
         {
              if(s1[i]==')'){
              for(j=i;j>=0;j--)
              {
                  if(s1[j]==')') k[i]++;
                  else if(s1[j]=='(')  k[i]--;
              }       } 
         }
         for(i=0;i<a;i++)
         {
            if(s1[i]==')')
            {
                 b=0;
                 for(j=i-1;j>=0;j--) if(s1[j]==')' && k[j]>0) b++;
                 k[i] -=b;
             }
         }
         for(i=a-1;i>=0;i--)
         {
             if(s1[i]=='(')
             {
                  b=0;
                  for(j=i+1;j<a;j++) if(s1[j]=='(' && k[j]>0) b++;
                  k[i] -=b;
             }              
         }
         for(i=0;i<a;i++) 
         {
             if(k[i]>0) {if(s1[i]=='(') s2[i]='$';else if(s1[i]==')') s2[i]='?';}
             else s2[i]=' ';
         }
         printf("%s\n",s1);
         for(i=0;i<a;i++) printf("%c",s2[i]);     
         printf("\n");  
    }
    }
/*
 * wanyi.cpp
 *
 *  Created on: 2012-12-3
 *      Author: 7
 */
char a[150];
char b[150];
int sig[150];
int main()
{
	int i,k=0;
	while(cin>>a)
	{
		k=0;
		int l=strlen(a);
		for(i=0;i<l;i++)
			{
			b[i]=a[i];
				if(a[i]=='(')
				{
					b[i]='$';
					sig[k]=i;
					k++;
				}
				if(a[i]==')')
				{
					k--;
					if(k<0)
						{b[i]='?';k=0;}
					else
					{
						b[sig[k]]='a';
					}
				}
			}
		cout<<a<<endl;
		for(i=0;i<l;i++)
		{
			if(b[i]!='$'&&b[i]!='?')
				cout<<" ";
			else
				cout<<b[i];
		}
		cout<<endl;
	}
}
/*??????
 *?????function3-4.cpp
 *Created on: 2012-12-4
 *?????????
 */

char input[105], output[105];//??????

void f()

{

	memset(output, 0, sizeof(output));//

	int l = 0, r = 0;

	int len = strlen(input);

	int i;

	for (i = 0; i < len; ++i)

	{

		output[i] = ' ';

		if (input[i] == ')')

		{

			if (l <= 0)

				output[i] = '?';//????????

			else

				l--;

		}

		else if (input[i] == '(')

			l++;

	}

	l = r = 0;

	for (i = len; i >= 0; --i)

	{

		if (input[i] == '(')

		{

			if (r <= 0)

				output[i] = '$';//????????

			else

				r--;

		}

		else if (input[i] == ')')

			r++;

	}

	cout << input << endl ;

	cout<< output << endl ;//????

}
int main() {

	while (cin.getline(input, 105)) {



		f();

	}

	return 0;//????
}
char a[150];int l,j;
void left(int i){
    int jj;
    /*
    cout << "left" << i << endl;
    for (int j = 0; j < l; j++) {
        cout << a[j];
    }
    cout << endl;*/
	if(i==l-1){a[i]='$';return;}
	for(jj=i+1;jj<l;jj++){
        //cout << "for jj=" << jj << endl;
		if(a[jj]==')'){
            a[jj]=' ';
            a[i]=' ';break;
		}
		else if(a[jj]=='('){left(jj);}
    }
    if (jj == l) {
        a[i] = '$';
    }
    //cout << "return" << endl;
	return;
}
void match(int i){//if(i==0){for(int k=0;k<l;k++)cout<<a[k];return;}
    /*cout << i << endl;
    for (int j = 0; j < l; j++) {
        cout << a[j];
    }
    cout << endl;*/
	if(i==l){
		for(int ii=0;ii<l;ii++){
			if(a[ii]=='('){a[ii]='$';}
			if(a[ii]==')'){a[ii]='?';}
		}
		return;
	}
	else{
		if(i==l-1&&a[i]=='('){a[i]='$';}
		if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')){a[i]=' ';}
		else if(a[i]=='('){left(i);}
		match(i+1);
	}
}
int main(){
	while(cin >> a){
		l=strlen(a);for(int k=0;k<l;k++)cout<<a[k];cout<<endl;
		match(0);for(int k=0;k<l;k++)cout<<a[k];cout<<endl;
	}
	return 0;
}
int main()
{
	while(true)
	{
		char a[110]={'\0'},b[110]={'\0'};
		int i=0;
		char x='\0';
		while(true)
		{
			x=getchar();
			if(x=='\n')break;
			a[i]=x;
			b[i]=x;
			i++;
		}
		int k=1,j,n;
		while(k<i)
		{
			for(j=0;j<i-k;j++)
			{
				int zhongjian=0,l;
				if(k!=1)
				{
					for(l=j+1;l<j+k;l++)
					{
						if(a[l]=='(' || a[l]==')')zhongjian=1;
					}
				}
				
				if(a[j]=='(' && a[j+k]==')' && zhongjian==0)
				{
					a[j]='\0';
					a[j+k]='\0';
					
				}
			}
			
			k=k+1;
			
		} 
		for(n=0;n<i;n++)
		{
			
			if(a[n]=='(')a[n]='$';
			else if(a[n]==')')a[n]='?';
			else a[n]=' ';
		}
		
		for(n=0;n<i;n++)cout<<b[n];
		cout<<endl;
		for(n=0;n<i;n++)cout<<a[n];
		cout<<endl;
		
	}
	return 0;
	
}
int main ()
{
	char sen[101];
	int g[100] = {0}, left[100] = {0};
	int m, n, i, k, sum;
	while (cin.getline(sen,101))
	{
		n = strlen(sen);
		k = 0;
		sum = 0;
		for (i = 0; i < n; i ++)
		{
			if (sen[i] == '(')
			{
				g[i] = 1;
				sum ++;
				left[k] = i;
				k ++;
			}
			else
			{
				if (sen[i] == ')')
				{
					if (sum > 0)
					{
						sum --;
						k --;
						g[left[k]] = 0;
						g[i] = 0;
					}
					else
					{
						g[i] = -1;
					}
				}
				else
					g[i] = 0;
			}
			
		}
		for (i = n -1; g[i] == 0; i --)
		{}
		n = i;
		for (i = 0; g[i] == 0; i ++)
		{}
		m = i;
		cout << sen << endl;
		for (i = m; i <= n; i ++)
		{
			if (g[i] == 1)
				cout << '$';
			else
			{
				if(g[i] == -1)
					cout << '?';
				else
					cout << ' ';
			}
		}
		cout << endl;
	}
	return 0;
}
int main()
{
	char a[500]={0};
	while(cin.getline(a,200))//???????? 
	{
		cout<<a<<endl;//???? 
		int i,j,l=strlen(a);
		for(i=0;i<l;i++)
		{
			if(a[i]==')')//??a[i]?) 
			{ 
			    for(j=i-1;j>=0;j--)
				{
					if(a[j]=='(')//??????( 
					{a[i]=a[j]=' ';break;} //???????? 
				}
			} 
			else if(a[i]=='(')continue;//????(,?? 
			else a[i]=' '; //???a[i]???? 
		} 
		for(i=0;i<l;i++)
		{
			if(a[i]=='(')cout<<'$';//???(,??? 
			else if(a[i]==')')cout<<'?'; //???),??$
			else cout<<' ';  
		} 
		cout<<endl; 
	} 
	return 0; 
}