#include<bits/stdc++.h>
using namespace std;
struct Node{
int data;
Node* left;
Node* right;
Node(){
left=NULL;
right=NULL;
}
};
vector<int> in,pos,le;
Node* build(int posl,int posr,int inl,int inr){
if(posl>posr) return NULL;
Node* root=new Node;
root->data=pos[posr];
int k;
for(int i=inl;i<=inr;i++){
if(in[i]==pos[posr]){
k=i;break;
}
}
int numleft=k-inl;
int numright=inr-k;
root->left=build(posl,posl+numleft-1,inl,k-1);
root->right=build(posl+numleft,posr-1,k+1,inr);
return root;
}
void levetra(Node* root){
queue<Node*> q;
q.push(root);
while(!q.empty()){
Node* now=q.front();
q.pop();
le.push_back(now->data);
if(now->left!=NULL) q.push(now->left);
if(now->right!=NULL) q.push(now->right);
}
}
int main()
{
//freopen("in.txt","r",stdin);
int n;cin>>n;pos.resize(n);in.resize(n);
for(int i=0;i<n;i++){
cin>>pos[i];
}
for(int i=0;i<n;i++){
cin>>in[i];
}
Node* root=build(0,n-1,0,n-1);
//cout<<root->data;
levetra(root);
for(int i=0;i<n;i++){
cout<<le[i];
if(i!=n-1) cout<<' ';
}
return 0;
}