#include<bits/stdc++.h>
using namespace std;
class node{
public:
int data;
node* left;
node* right;
node(int d){
data=d;
left=right=NULL;
}
};
node* buildtree(int* pre,int* ino,int s,int e){//s & e are indexes of inorder array
static int i=0;
if(e<s){
return NULL;
}
node* root=new node(pre[i]);
int idx=-1;
for(int j=s;j<=e;j++){
if(ino[j]==pre[i]){
idx=j;break;
}
}
i++;
root->left=buildtree(pre,ino,s,idx-1);
root->right=buildtree(pre,ino,idx+1,e);
return root;
}
map<int ,int > visited;
map<node*, node* > parent;
node* target=NULL;
void preorder(node* root,int x){
if(root==NULL){
return;
}
cout<<root->data<<" ";
if(root->data==x){
target=root;
}
if(root->left){ //making parent map
parent[root->left]=root;
}
if(root->right){
parent[root->right]=root;
}
preorder(root->left,x);
preorder(root->right,x);
}
void fine(node* root,int level){
queue<pair<node*,int > > q;
q.push(make_pair(root,0));
visited[root->data]=1;
while(!q.empty()){
pair<node*,int > temp=q.front();
if(temp.second==level){
while(!q.empty()){
cout<<q.front().first->data<<endl;
q.pop();
}
break;
}
q.pop();
if(temp.first->left && visited[temp.first->left->data]!=1){
visited[temp.first->left->data]=1;
q.push(make_pair(temp.first->left,temp.second+1));
}
if(temp.first->right && visited[temp.first->right->data]!=1){
visited[temp.first->right->data]=1;
q.push(make_pair(temp.first->right,temp.second+1));
}
if(visited[parent[temp.first]->data]!=1){
visited[parent[temp.first]->data]=1;
q.push(make_pair(parent[temp.first],temp.second+1));
}
}
}
int main(){
int n,x,y,z;
cin>>n;
int a[n+1];
for(int i=0;i<n;i++)
{
cin>>a[i];
}
int b[n+1];
for(int i=0;i<n;i++)
{
cin>>b[i];
}
node* root=buildtree(a,b,0,n-1);
cin>>z;
while(z--){
cin>>x>>y;
preorder(root,x);
cout<<target->data<<endl;
fine(target,y) ; //node* temp=find(root,x);
visited.clear();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIG5vZGV7CglwdWJsaWM6CgkJCWludCBkYXRhOwoJCQlub2RlKiBsZWZ0OwogICAgICAgICAgICBub2RlKiByaWdodDsKCQkJbm9kZShpbnQgZCl7CgkJCQlkYXRhPWQ7CgkJCQlsZWZ0PXJpZ2h0PU5VTEw7CgkJCX0KfTsKbm9kZSogYnVpbGR0cmVlKGludCogcHJlLGludCogaW5vLGludCBzLGludCBlKXsvL3MgJiBlIGFyZSBpbmRleGVzIG9mIGlub3JkZXIgYXJyYXkKCXN0YXRpYyBpbnQgaT0wOwoJaWYoZTxzKXsKCQlyZXR1cm4gTlVMTDsKCX0KCW5vZGUqIHJvb3Q9bmV3IG5vZGUocHJlW2ldKTsKCWludCBpZHg9LTE7Cglmb3IoaW50IGo9cztqPD1lO2orKyl7CgkJaWYoaW5vW2pdPT1wcmVbaV0pewoJCQlpZHg9ajticmVhazsKCQl9Cgl9CglpKys7Cglyb290LT5sZWZ0PWJ1aWxkdHJlZShwcmUsaW5vLHMsaWR4LTEpOwoJcm9vdC0+cmlnaHQ9YnVpbGR0cmVlKHByZSxpbm8saWR4KzEsZSk7CglyZXR1cm4gcm9vdDsKfQoKbWFwPGludCAsaW50ID4gdmlzaXRlZDsKbWFwPG5vZGUqLCBub2RlKiA+IHBhcmVudDsKbm9kZSogdGFyZ2V0PU5VTEw7Cgp2b2lkIHByZW9yZGVyKG5vZGUqIHJvb3QsaW50IHgpewogICAgaWYocm9vdD09TlVMTCl7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgY291dDw8cm9vdC0+ZGF0YTw8IiAiOwogICAgaWYocm9vdC0+ZGF0YT09eCl7CiAgICAgICAgdGFyZ2V0PXJvb3Q7CiAgICB9CiAgICBpZihyb290LT5sZWZ0KXsgICAgICAgICAgICAgICAgICAgICAgICAgLy9tYWtpbmcgcGFyZW50IG1hcAogICAgICAgIHBhcmVudFtyb290LT5sZWZ0XT1yb290OwogICAgfQogICAgaWYocm9vdC0+cmlnaHQpewogICAgICAgIHBhcmVudFtyb290LT5yaWdodF09cm9vdDsKICAgIH0KICAgIHByZW9yZGVyKHJvb3QtPmxlZnQseCk7CiAgICBwcmVvcmRlcihyb290LT5yaWdodCx4KTsKfQp2b2lkIGZpbmUobm9kZSogcm9vdCxpbnQgbGV2ZWwpewogICAgcXVldWU8cGFpcjxub2RlKixpbnQgPiA+IHE7CiAgICBxLnB1c2gobWFrZV9wYWlyKHJvb3QsMCkpOwogICAgdmlzaXRlZFtyb290LT5kYXRhXT0xOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgcGFpcjxub2RlKixpbnQgPiB0ZW1wPXEuZnJvbnQoKTsKICAgICAgICBpZih0ZW1wLnNlY29uZD09bGV2ZWwpewogICAgICAgICAgICB3aGlsZSghcS5lbXB0eSgpKXsKICAgICAgICAgICAgICAgIGNvdXQ8PHEuZnJvbnQoKS5maXJzdC0+ZGF0YTw8ZW5kbDsKICAgICAgICAgICAgICAgIHEucG9wKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHEucG9wKCk7CiAgICAgICAgaWYodGVtcC5maXJzdC0+bGVmdCAmJiB2aXNpdGVkW3RlbXAuZmlyc3QtPmxlZnQtPmRhdGFdIT0xKXsKICAgICAgICAgICAgdmlzaXRlZFt0ZW1wLmZpcnN0LT5sZWZ0LT5kYXRhXT0xOwogICAgICAgICAgICBxLnB1c2gobWFrZV9wYWlyKHRlbXAuZmlyc3QtPmxlZnQsdGVtcC5zZWNvbmQrMSkpOwogICAgICAgIH0KICAgICAgICBpZih0ZW1wLmZpcnN0LT5yaWdodCAmJiB2aXNpdGVkW3RlbXAuZmlyc3QtPnJpZ2h0LT5kYXRhXSE9MSl7CiAgICAgICAgICAgIHZpc2l0ZWRbdGVtcC5maXJzdC0+cmlnaHQtPmRhdGFdPTE7CiAgICAgICAgICAgIHEucHVzaChtYWtlX3BhaXIodGVtcC5maXJzdC0+cmlnaHQsdGVtcC5zZWNvbmQrMSkpOwoKICAgICAgICB9CiAgICAgICAgaWYodmlzaXRlZFtwYXJlbnRbdGVtcC5maXJzdF0tPmRhdGFdIT0xKXsKICAgICAgICAgICAgdmlzaXRlZFtwYXJlbnRbdGVtcC5maXJzdF0tPmRhdGFdPTE7CiAgICAgICAgICAgIHEucHVzaChtYWtlX3BhaXIocGFyZW50W3RlbXAuZmlyc3RdLHRlbXAuc2Vjb25kKzEpKTsKCiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpewoJaW50IG4seCx5LHo7CgljaW4+Pm47CglpbnQgYVtuKzFdOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQljaW4+PmFbaV07Cgl9CglpbnQgYltuKzFdOwoJZm9yKGludCBpPTA7aTxuO2krKykKCXsKCQljaW4+PmJbaV07Cgl9CiAgICBub2RlKiByb290PWJ1aWxkdHJlZShhLGIsMCxuLTEpOwogICAgY2luPj56OwogICAgd2hpbGUoei0tKXsKICAgICAgICBjaW4+Png+Pnk7CiAgICAgICAgcHJlb3JkZXIocm9vdCx4KTsKICAgICAgICBjb3V0PDx0YXJnZXQtPmRhdGE8PGVuZGw7CiAgICAgICAgZmluZSh0YXJnZXQseSkgICA7ICAgICAvL25vZGUqIHRlbXA9ZmluZChyb290LHgpOwoJCXZpc2l0ZWQuY2xlYXIoKTsKICAgIH0KfQo=