#include<stdio.h>
#include<stdlib.h>
typedef struct tree{
char c;
struct tree *lchild;
struct tree *rchild;
}BTreeNode, *BTree;
BTree InitTree(char c){
BTree b=(BTree)malloc(sizeof(BTreeNode));
if(!b){
free(b);
return NULL;
}
b->lchild=NULL;
b->rchild=NULL;
b->c=c;
return b;
}
BTree proorderTree(BTree b,char c){
if(!b)
return NULL;
if(b->c==c)
return b;
if(proorderTree(b->lchild,c))
return proorderTree(b->lchild,c);
if(proorderTree(b->rchild,c))
return proorderTree(b->rchild,c);
return NULL;
}
void ProorderTree(BTree b){
if(!b)
return ;
printf("%c",b->c);
if(b->lchild)
ProorderTree(b->lchild);
if(b->rchild)
ProorderTree(b->rchild);
}
void ConstructTree(BTree b){
char c;
scanf("%c",&c);
if(b->lchild==NULL&&b->rchild==NULL){
b->c=c;
scanf("%c",&c);
if(c=='*')
b->lchild=NULL;
else
b->lchild=InitTree(c);
scanf("%c",&c);
if(c=='*')
b->rchild=NULL;
else
b->rchild=InitTree(c);
}
else{
BTree t=proorderTree(b,c);
if(!t)
return ;
scanf("%c",&c);
if(c=='*')
t->lchild=NULL;
else
t->lchild=InitTree(c);
scanf("%c",&c);
if(c=='*')
t->rchild=NULL;
else
t->rchild=InitTree(c);
}
}
int main(){
int num;
scanf("%d",&num);
int i;
BTree b=(BTree)malloc(sizeof(BTreeNode));
if(!b)
return 0;
b->lchild=NULL;b->rchild=NULL;
getchar();
for(i=0;i<num;i++){
ConstructTree(b);
getchar();
}
ProorderTree(b);
return 0;
}