#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int n;
vector<int> in, post;
void func(int is, int ie, int ps, int pe) {
cout << is << " " << ie << " " << ps << " " << pe << endl;
if(is >= ie || ps >= pe)
return;
int root = post[pe-1];
int ri = find(in.begin(), in.end(), root)-in.begin();
cout << root << endl;
int ln = ri-is;
func(is, ri, ps, ps+ln);
func(ri+1, ie, ps+ln+1, pe-1);
}
int main() {
cin >> n;
in.resize(n);
post.resize(n);
//인 오더
//포스트 오더
for(int i = 0; i < n; i++)
cin >> in[i];
for(int i = 0; i < n; i++)
cin >> post[i];
//포스트 오더의 맨 뒤가 루트
//=> 인오더에서 루트의 좌 우가
func(0, n, 0, n);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG47CnZlY3RvcjxpbnQ+IGluLCBwb3N0OwoKdm9pZCBmdW5jKGludCBpcywgaW50IGllLCBpbnQgcHMsIGludCBwZSkgewogICAgY291dCA8PCBpcyA8PCAiICIgPDwgaWUgPDwgIiAiIDw8IHBzIDw8ICIgIiA8PCBwZSA8PCBlbmRsOwogICAgaWYoaXMgPj0gaWUgfHwgcHMgPj0gcGUpCiAgICAgICAgcmV0dXJuOwoKICAgIGludCByb290ID0gcG9zdFtwZS0xXTsKICAgIGludCByaSA9IGZpbmQoaW4uYmVnaW4oKSwgaW4uZW5kKCksIHJvb3QpLWluLmJlZ2luKCk7CiAgICBjb3V0IDw8IHJvb3QgPDwgZW5kbDsKICAgIAogICAgaW50IGxuID0gcmktaXM7CiAgICAKICAgIGZ1bmMoaXMsIHJpLCBwcywgcHMrbG4pOwogICAgZnVuYyhyaSsxLCBpZSwgcHMrbG4rMSwgcGUtMSk7Cn0KCmludCBtYWluKCkgewogICAgY2luID4+IG47CiAgICBpbi5yZXNpemUobik7CiAgICBwb3N0LnJlc2l6ZShuKTsKICAgIC8v7J24IOyYpOuNlAogICAgLy/tj6zsiqTtirgg7Jik642UCiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIGNpbiA+PiBpbltpXTsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgY2luID4+IHBvc3RbaV07CiAgICAKICAgIC8v7Y+s7Iqk7Yq4IOyYpOuNlOydmCDrp6gg65Kk6rCAIOujqO2KuAogICAgLy89PiDsnbjsmKTrjZTsl5DshJwg66Oo7Yq47J2YIOyijCDsmrDqsIAgCiAgICBmdW5jKDAsIG4sIDAsIG4pOwogICAgCiAgICByZXR1cm4gMDsKfQ==