#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 << ri << " " << root << endl;
int ln = ri-is;
func(is, ri, ps, ps+ln);
func(ri+1, ie, ps+ln+1, pe-2);
}
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+IGluLCBwb3N0OwoKdm9pZCBmdW5jKGludCBpcywgaW50IGllLCBpbnQgcHMsIGludCBwZSkgewogICAgY291dCA8PCBpcyA8PCAiICIgPDwgaWUgPDwgIiAiIDw8IHBzIDw8ICIgIiA8PCBwZSA8PCBlbmRsOwogICAgaWYoaXMgPj0gaWUgfHwgcHMgPj0gcGUpCiAgICAgICAgcmV0dXJuOwoKICAgIGludCByb290ID0gcG9zdFtwZS0xXTsKICAgIGludCByaSA9IGZpbmQoaW4uYmVnaW4oKSwgaW4uZW5kKCksIHJvb3QpLWluLmJlZ2luKCk7CiAgICBjb3V0IDw8IHJpIDw8ICIgIiA8PCByb290IDw8IGVuZGw7CiAgICAKICAgIGludCBsbiA9IHJpLWlzOwogICAgCiAgICBmdW5jKGlzLCByaSwgcHMsIHBzK2xuKTsKICAgIGZ1bmMocmkrMSwgaWUsIHBzK2xuKzEsIHBlLTIpOwp9CgppbnQgbWFpbigpIHsKICAgIGNpbiA+PiBuOwogICAgaW4ucmVzaXplKG4pOwogICAgcG9zdC5yZXNpemUobik7CiAgICAvL+yduCDsmKTrjZQKICAgIC8v7Y+s7Iqk7Yq4IOyYpOuNlAogICAgZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgICAgICBjaW4gPj4gaW5baV07CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgIGNpbiA+PiBwb3N0W2ldOwogICAgCiAgICAvL+2PrOyKpO2KuCDsmKTrjZTsnZgg66eoIOuSpOqwgCDro6jtirgKICAgIC8vPT4g7J247Jik642U7JeQ7IScIOujqO2KuOydmCDsoowg7Jqw6rCAIAogICAgZnVuYygwLCBuLCAwLCBuKTsKICAgIAogICAgcmV0dXJuIDA7Cn0=