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;
    }
}