#include<iostream>
#include<vector>
using namespace std;
struct Node{
int address;
string data;
int left;
int right;
}node[21];
int Root;
void infix(int root){
if(root==-1) return;
if(root!=Root&&(node[root].left!=-1||node[root].right!=-1)) cout<<"(";
infix(node[root].left);
cout<<node[root].data;
infix(node[root].right);
if(root!=Root&&(node[root].left!=-1||node[root].right!=-1)) cout<<")";
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("in.txt","r",stdin);
#endif
int n;
cin>>n;
int hash[21]={};
for(int i=0;i<n;i++){
int l,r;
string d;
cin>>d>>l>>r;
node[i+1].address=i+1;
node[i+1].data=d;
node[i+1].left=l;
node[i+1].right=r;
}
for(int i=1;i<=n;i++){
if(node[i].left!=-1)
hash[node[i].left]=1;
if(node[i].right!=-1)
hash[node[i].right]=1;
}
int root;
for(int i=1;i<=n;i++){
if(hash[i]==0){
root=i;
break;
}
}
Root=root;
infix(root);
return 0;
}