package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Queue;
import java.util.StringTokenizer;
public class BaekJoonQ1991_P408_Q70 {
static ArrayList<Integer> tree[];
static char []circuit;
static BufferedWriter bw;
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
bw =new BufferedWriter(new OutputStreamWriter(System.out));
int nodes=Integer.parseInt(br.readLine());
tree = new ArrayList[nodes+1];
for(int i=1; i<nodes+1;i++) {
tree[i] = new ArrayList<>();
}
for(int i=0;i<nodes;i++) {
StringTokenizer st =new StringTokenizer(br.readLine());
int parent =((st.nextToken()).charAt(0)) - 64;
int left = ((st.nextToken()).charAt(0)) - 64;
int right = ((st.nextToken()).charAt(0)) -64;
tree[parent].add(left);
tree[parent].add(right);
}
pre(1);
bw.write("\n");
in(1);
bw.write("\n");
post(1);
bw.flush();
}
private static void pre(int node) throws IOException {
if (node == -18) return;
int left = tree[node].get(0);
int right = tree[node].get(1);
bw.write((char) (node +64));
pre(left);
pre(right);
}
private static void in(int node) throws IOException {
if (node == -18) return;
int left = tree[node].get(0);
int right = tree[node].get(1);
in(left);
bw.write((char) (node +64));
in(right);
}
private static void post(int node) throws IOException {
if (node == -18) return;
int left = tree[node].get(0);
int right = tree[node].get(1);
post(left);
post(right);
bw.write((char) (node +64));
}
}