#include <bits/stdc++.h>
using namespace std;
struct node{
string data;
int lchild,rchild;
};
vector<node> T;
int Troot=-1;
void in_order(int root){
if(root==-1) return;
if(T[root].lchild!=-1 && T[root].rchild!=-1 && root!=Troot) cout<<"(";
else if(T[root].lchild==-1 && T[root].rchild!=-1 && root!=Troot) cout<<"(";
in_order(T[root].lchild);
cout<<T[root].data;
in_order(T[root].rchild);
if(T[root].lchild!=-1 && T[root].rchild!=-1 && root!=Troot) cout<<")";
else if(T[root].lchild==-1 && T[root].rchild!=-1 && root!=Troot) cout<<")";
}
int num[25];
int main(){
int n;
cin>>n;
T.resize(n+1);
for(int i=1;i<=n;i++){
cin>>T[i].data>>T[i].lchild>>T[i].rchild;
if(T[i].lchild!=-1)num[T[i].lchild]=1;
if(T[i].rchild!=-1)num[T[i].rchild]=1;
}
for(int i=1;i<=n;i++){
if(num[i]==0){
Troot=i;
break;
}
}
in_order(Troot);
return 0;
}
10-02
1700
10-07
1356