import java.util.*;
// 定义一个节点类
class TreeNode {
int left; // 左子节点索引
int right; // 右子节点索引
}
public class Main {
public static TreeNode[] nodes; // 节点数组,用于存储所有节点
// 深度优先搜索函数
public static void dfs(int rid){
if(rid != -1){ // 如果节点索引不为-1,表示节点存在
System.out.print((char)(rid+'a')); // 打印节点的字符值
dfs(nodes[rid].left); // 递归遍历左子节点
dfs(nodes[rid].right); // 递归遍历右子节点
}
}
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int n = input.nextInt(); // 输入节点数
nodes = new TreeNode[28]; // 初始化节点数组,最多支持26个节点(a-z)
// 初始化每个节点
for(int i=0; i<28; i++){
nodes[i] = new TreeNode();
}
int scord = -1; // 根节点的索引
// 读取每个节点的字符串表示,并构建节点间的关系
for(int i=0; i<n; i++){
String str = input.next(); // 输入节点的字符串表示
int id = str.charAt(0) - 'a'; // 获取节点索引
if(i == 0){
scord = id; // 第一个节点为根节点
}
int leftid = -1, rightid = -1; // 左子节点和右子节点的索引
if(str.charAt(1) != '*'){
leftid = str.charAt(1) - 'a'; // 获取左子节点索引
}
if(str.charAt(2) != '*'){
rightid = str.charAt(2) - 'a'; // 获取右子节点索引
}
nodes[id].left = leftid; // 设置节点的左子节点索引
nodes[id].right = rightid; // 设置节点的右子节点索引
}
dfs(scord); // 从根节点开始深度优先遍历
}
}