#include <stdio.h>
#include <stdlib.h>
#define nMAX 41

int NC = 0,lC = 0,n;

//二分木再起関数で後順
void BtreeRec(int left,int right,int Af[],int Am[],int Al[]){
    int tmp,mid;
    
    //leftとright入れ替わりで終了
    if(left >= right) {
        return;
    }
    
    tmp = Af[NC++];
    mid = Find(tmp,Am);
    //今の場所から左側の処理
    BtreeRec(left, mid,Af,Am,Al);
    //今の場所から右側の処理
    BtreeRec(mid + 1, right,Af,Am,Al);
    Al[lC++] = tmp;
}

//AfとAmで同じ数の物を返す
int Find(int tmp,int Am[]) {
    for(int i = 0 ; i < n ; i++) {
        if(tmp == Am[i]) {
            return i;
        }
    }
    return 0;
}

int main(){
    //枠の作成
    int i;
    scanf("%d",&n);
    int *Af = malloc(sizeof(int)*n);
    int *Am = malloc(sizeof(int)*n);
    int *Al = malloc(sizeof(int)*n);
    
    //読み込み
    for( i = 0 ; i < n ; i++ ){
        scanf("%d",&Af[i]);
    }
    for( i = 0 ; i < n ; i++ ){
        scanf("%d",&Am[i]);
    }
    
    //後行順巡回作成
    BtreeRec(0,n,Af,Am,Al);
    
    //表示
    for(i = 0 ; i < n-1 ; i++) {
        printf("%d ",Al[i]);
    }
    printf("%d\n", Al[n-1]);
    
    return 0;
}
