int N;
vector<int> inorder, postorder;
map<int, int> in_idx;
void preorder(int in_s, int in_e, int post_s, int post_e){
if(in_s > in_e) return;
int root = postorder[post_e];
cout << root << ' ';
int idx = in_idx[root];
int sz = idx - in_s;
preorder(in_s, idx-1, post_s, post_s + sz - 1); // 왼쪽 서브트리
preorder(idx+1, in_e, post_s + sz, post_e - 1); // 오른쪽 서브트리
}
void solve(){
cin >> N;
inorder.resize(N);
postorder.resize(N);
rep(i, 0, N) cin >> inorder[i];
rep(i, 0, N) cin >> postorder[i];
rep(i, 0, N) in_idx[inorder[i]] = i;
preorder(0, N-1, 0, N-1);
}