#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
int n, post[35]={0}, in[35]={0};
struct pnode{
int data;
pnode *left;
pnode *right;
};
pnode * DFS(int postL,int postR, int inL, int inR){
if(postL>postR)return NULL;
pnode *root=new pnode;
root->data=post[postR];
int k;
for(k=inL;k<inR;k++){
if(post[postR]==in[k])break;
}
root->left=DFS(postL,postL+(k-inL)-1,inL,k-1);
root->right=DFS(postL+(k-inL),postR-1,k+1,inR);
return root;
}
int main(){
int i;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&post[i]);
for(i=0;i<n;i++)scanf("%d",&in[i]);
pnode *root=DFS(0,n-1,0,n-1);
i=0;
queue<pnode*>que;
que.push(root);
while(!que.empty()){
pnode* front=que.front();
que.pop();
printf("%d",front->data);i++;
if(i<n)printf(" ");
if(front->left!=NULL)que.push(front->left);
if(front->right!=NULL)que.push(front->right);
}
return 0;
}