import java.util.*;
/**
* Created by jose on 2018/9/18.
*/
public class Red2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
String line = sc.nextLine();
String[] levelarr = line.split(" ");
List<Integer> level = new ArrayList<>();
for (int i = 0; i <levelarr.length; i++) {
level.add(Integer.valueOf(levelarr[i]));
}
line = sc.nextLine();
String[] midarr = line.split(" ");
int[] mid = new int[midarr.length];
for (int i = 0; i < midarr.length; i++) {
mid[i]= Integer.parseInt(midarr[i]);
}
boolean[] visited = new boolean[1024];
Node head = build(level,mid,visited,0,mid.length-1);
leaf(head);
System.out.println();
pre_visited(head);
System.out.println();
pos_visited(head);
}
}
static void leaf(Node node){
if(node==null) return;
if(node.left == null&&node.right==null) {
System.out.print(node.value+" ");
}
leaf(node.left);
leaf(node.right);
}
static void pre_visited(Node node){
if(node == null) return;
System.out.print(node.value+" ");
pre_visited(node.left);
pre_visited(node.right);
}
static void pos_visited(Node node){
if(node == null) return;
pos_visited(node.left);
pos_visited(node.right);
System.out.print(node.value+" ");
}
static class Node{
int value;
Node left;
Node right;
}
public static Node build(List<Integer> level,int[] mid,boolean[] visited,int left,int right){
if(level.size()==0) return null;
Node head = new Node();
head.value = level.get(0);
int pos=0;
for (int i = left; i <= right; i++) {
if (level.get(0) == mid[i]){
pos=i;
break;
}
}
int cleft = left;
int cright = pos-1;
for (int i = 0; i < 1024; i++) {
visited[i]=false;
}
for (int i = cleft; i <= cright; i++) {
visited[mid[i]] = true;
}
List<Integer> leftchild=new ArrayList<>();
List<Integer> rightchild=new ArrayList<>();
for (int i = 1; i < level.size(); i++) {
if(visited[level.get(i)]){
leftchild.add(level.get(i));
}else {
rightchild.add(level.get(i));
}
}
head.left=build(leftchild,mid,visited,left,cright);
head.right=build(rightchild,mid,visited,pos+1,right);
return head;
}
}