#include<stdio.h>
#include<stdlib.h>

int n,*pre,*in,*post,prenumber=-1,cnt=0;

int infind(int number)//numberが格納されているinの要素番号を返す
{
	int i;
	for(i=0;i<n;i++) if(in[i]==number) return i;
	printf("error\n");
	return 100000;
}

void reconstraction(int l,int r)//後行順巡回を出力する関数
{
	int c,m;
	if(l>=r) return;
	prenumber++;
	c=pre[prenumber];//探索する値をcに格納
	m=infind(c);//inの要素番号をmに格納
	if(m==100000) return;
	reconstraction(l,m);//左部分木を探索
	reconstraction(m+1,r);//右部分木を探索
	
	post[cnt]=c;//葉まで行けば、出力条件を満たすため一度配列に巡回順を格納
	cnt++;
}

int main(void)
{
	int i;
	scanf("%d",&n);
	pre=(int*)malloc(sizeof(int)*n);
	in=(int*)malloc(sizeof(int)*n);
	post=(int*)malloc(sizeof(int)*n);
	for(i=0;i<n;i++) scanf("%d",&pre[i]);
	for(i=0;i<n;i++) scanf("%d",&in[i]);
	
	reconstraction(0,n);
	for(i=0;i<n;i++){
		if(i!=0) printf(" ");
		printf("%d",post[i]);
	}
	printf("\n");
	
	free(pre);
	free(in);
	free(post);
	
	return 0;
}
