#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){
int flag=0;
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){
flag=1;
vector<int > v;
if(q.empty()){
cout<<0<<" ";
}
else{
while(!q.empty()){
v.push_back(q.front().first->data);
//cout<<q.front().first->data<<" ";
q.pop();
}
sort(v.begin(),v.end());
for(auto it:v){
cout<<it<<" ";
}
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(parent.find(temp.first)!=parent.end() && visited[parent[temp.first]->data]!=1){
visited[parent[temp.first]->data]=1;
q.push(make_pair(parent[temp.first],temp.second+1));
}
}
if(flag==0){
cout<<0<<" ";
}
}
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);
cout<<endl;
visited.clear();
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIG5vZGV7CglwdWJsaWM6CgkJCWludCBkYXRhOwoJCQlub2RlKiBsZWZ0OwogICAgICAgICAgICBub2RlKiByaWdodDsKCQkJbm9kZShpbnQgZCl7CgkJCQlkYXRhPWQ7CgkJCQlsZWZ0PXJpZ2h0PU5VTEw7CgkJCX0KfTsKbm9kZSogYnVpbGR0cmVlKGludCogcHJlLGludCogaW5vLGludCBzLGludCBlKXsvL3MgJiBlIGFyZSBpbmRleGVzIG9mIGlub3JkZXIgYXJyYXkKCXN0YXRpYyBpbnQgaT0wOwoJaWYoZTxzKXsKCQlyZXR1cm4gTlVMTDsKCX0KCW5vZGUqIHJvb3Q9bmV3IG5vZGUocHJlW2ldKTsKCWludCBpZHg9LTE7Cglmb3IoaW50IGo9cztqPD1lO2orKyl7CgkJaWYoaW5vW2pdPT1wcmVbaV0pewoJCQlpZHg9ajticmVhazsKCQl9Cgl9CglpKys7Cglyb290LT5sZWZ0PWJ1aWxkdHJlZShwcmUsaW5vLHMsaWR4LTEpOwoJcm9vdC0+cmlnaHQ9YnVpbGR0cmVlKHByZSxpbm8saWR4KzEsZSk7CglyZXR1cm4gcm9vdDsKfQoKbWFwPGludCAsaW50ID4gdmlzaXRlZDsKbWFwPG5vZGUqLCBub2RlKiA+IHBhcmVudDsKbm9kZSogdGFyZ2V0PU5VTEw7Cgp2b2lkIHByZW9yZGVyKG5vZGUqIHJvb3QsaW50IHgpewogICAgaWYocm9vdD09TlVMTCl7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAvLyBjb3V0PDxyb290LT5kYXRhPDwiICI7CiAgICBpZihyb290LT5kYXRhPT14KXsKICAgICAgICB0YXJnZXQ9cm9vdDsKICAgIH0KICAgIGlmKHJvb3QtPmxlZnQpeyAgICAgICAgICAgICAgICAgICAgICAgICAvL21ha2luZyBwYXJlbnQgbWFwCiAgICAgICAgcGFyZW50W3Jvb3QtPmxlZnRdPXJvb3Q7CiAgICB9CiAgICBpZihyb290LT5yaWdodCl7CiAgICAgICAgcGFyZW50W3Jvb3QtPnJpZ2h0XT1yb290OwogICAgfQogICAgcHJlb3JkZXIocm9vdC0+bGVmdCx4KTsKICAgIHByZW9yZGVyKHJvb3QtPnJpZ2h0LHgpOwp9CnZvaWQgZmluZShub2RlKiByb290LGludCBsZXZlbCl7CglpbnQgZmxhZz0wOwogICAgcXVldWU8cGFpcjxub2RlKixpbnQgPiA+IHE7CiAgICBxLnB1c2gobWFrZV9wYWlyKHJvb3QsMCkpOwogICAgdmlzaXRlZFtyb290LT5kYXRhXT0xOwogICAgd2hpbGUoIXEuZW1wdHkoKSl7CiAgICAgICAgcGFpcjxub2RlKixpbnQgPiB0ZW1wPXEuZnJvbnQoKTsKICAgICAgICBpZih0ZW1wLnNlY29uZD09bGV2ZWwpewogICAgICAgIAlmbGFnPTE7CiAgICAgICAgCXZlY3RvcjxpbnQgPiB2OwogICAgICAgIAlpZihxLmVtcHR5KCkpewogICAgICAgIAkJY291dDw8MDw8IiAiOwogICAgICAgIAl9CiAgICAgICAgCWVsc2V7CgkgICAgICAgICAgICB3aGlsZSghcS5lbXB0eSgpKXsKCSAgICAgICAgICAgIAl2LnB1c2hfYmFjayhxLmZyb250KCkuZmlyc3QtPmRhdGEpOwoJICAgICAgICAgICAgICAgIC8vY291dDw8cS5mcm9udCgpLmZpcnN0LT5kYXRhPDwiICI7CgkgICAgICAgICAgICAgICAgcS5wb3AoKTsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIHNvcnQodi5iZWdpbigpLHYuZW5kKCkpOwoJICAgICAgICAgICAgZm9yKGF1dG8gaXQ6dil7CgkgICAgICAgICAgICAJY291dDw8aXQ8PCIgIjsKCSAgICAgICAgICAgIH0KCSAgICAgICAgICAgIGJyZWFrOwogICAgICAgIAl9CiAgICAgICAgfQogICAgICAgIHEucG9wKCk7CiAgICAgICAgaWYodGVtcC5maXJzdC0+bGVmdCAmJiB2aXNpdGVkW3RlbXAuZmlyc3QtPmxlZnQtPmRhdGFdIT0xKXsKICAgICAgICAgICAgdmlzaXRlZFt0ZW1wLmZpcnN0LT5sZWZ0LT5kYXRhXT0xOwogICAgICAgICAgICBxLnB1c2gobWFrZV9wYWlyKHRlbXAuZmlyc3QtPmxlZnQsdGVtcC5zZWNvbmQrMSkpOwogICAgICAgIH0KICAgICAgICBpZih0ZW1wLmZpcnN0LT5yaWdodCAmJiB2aXNpdGVkW3RlbXAuZmlyc3QtPnJpZ2h0LT5kYXRhXSE9MSl7CiAgICAgICAgICAgIHZpc2l0ZWRbdGVtcC5maXJzdC0+cmlnaHQtPmRhdGFdPTE7CiAgICAgICAgICAgIHEucHVzaChtYWtlX3BhaXIodGVtcC5maXJzdC0+cmlnaHQsdGVtcC5zZWNvbmQrMSkpOwoKICAgICAgICB9CiAgICAgICAgaWYocGFyZW50LmZpbmQodGVtcC5maXJzdCkhPXBhcmVudC5lbmQoKSAmJiB2aXNpdGVkW3BhcmVudFt0ZW1wLmZpcnN0XS0+ZGF0YV0hPTEpewogICAgICAgICAgICB2aXNpdGVkW3BhcmVudFt0ZW1wLmZpcnN0XS0+ZGF0YV09MTsKICAgICAgICAgICAgcS5wdXNoKG1ha2VfcGFpcihwYXJlbnRbdGVtcC5maXJzdF0sdGVtcC5zZWNvbmQrMSkpOwoKICAgICAgICB9CiAgICB9CiAgICBpZihmbGFnPT0wKXsKICAgIAljb3V0PDwwPDwiICI7CiAgICB9Cn0KCmludCBtYWluKCl7CglpbnQgbix4LHksejsKCWNpbj4+bjsKCWludCBhW24rMV07Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWNpbj4+YVtpXTsKCX0KCWludCBiW24rMV07Cglmb3IoaW50IGk9MDtpPG47aSsrKQoJewoJCWNpbj4+YltpXTsKCX0KICAgIG5vZGUqIHJvb3Q9YnVpbGR0cmVlKGEsYiwwLG4tMSk7CiAgICBjaW4+Pno7CiAgICB3aGlsZSh6LS0pewogICAgICAgIGNpbj4+eD4+eTsKICAgICAgICBwcmVvcmRlcihyb290LHgpOwogICAgICAgLy8gY291dDw8dGFyZ2V0LT5kYXRhPDxlbmRsOwogICAgICAgIGZpbmUodGFyZ2V0LHkpICAgOyAgICAgLy9ub2RlKiB0ZW1wPWZpbmQocm9vdCx4KTsKCQljb3V0PDxlbmRsOwoJCXZpc2l0ZWQuY2xlYXIoKTsKICAgIH0KfQo=