#include<bits/stdc++.h>
using namespace std;
#define MAXN 100
int pre[MAXN];
int in[MAXN];
struct node{
int data;
node* leftchild;
node* rightchild;
};
node* recover(int pre1,int pre2,int in1,int in2){
if(pre1>pre2){
return NULL;
}
node* s = new node;
s->data = pre[pre1];
int i = in1;
for(;i<=in2;i++){
if(pre[0] == in[i]){
break;
}
}
int leftnum = i-in1;
s->leftchild =recover( pre1+1, pre1+leftnum, in1, i-1);
s->rightchild =recover( pre1+leftnum+1, pre2,i+1,in2 );
return s;
}
void postOrder(node* root){
if(root == NULL){
return;
}else{
postOrder(root->leftchild);
postOrder(root->rightchild);
cout<<root->data<<" ";
}
}
int main(){
int n;
cin>>n;
for(int i = 0;i<n;i++){
cin>>pre[i];
}
for(int j = 0;j<n;j++){
cin>>in[j];
}
node* root = recover(0,n-1,0,n-1);
postOrder(root);
return 0;
}