

#include <stdio.h>
#include <malloc.h>
typedef struct BTNode
{
int data;
struct BTNode *lchild;
struct BTNode *rchild;
}BTNode,*BTree;
int flag=0;
void CreatBTree(BTree *tree)
{
int n=0;
scanf("%d",&n);
if(n==0)
{
*tree=NULL;
}
else
{
*tree=(BTree)malloc(sizeof(BTNode));
(*tree)->data=n;
CreatBTree(&((*tree)->lchild));
CreatBTree(&((*tree)->rchild));
}
}
void find(BTree tree,int x,BTNode **p,BTNode **parent,BTree tt)
{
if(tree==NULL)
{
return;
}
if(tree->data==x)
{
*p=tree;
return;
}
if(tree->lchild!=NULL&&tree->lchild->data==x)
{
*parent=tree;
*p=tree->lchild;
return;
}
if(tree->rchild!=NULL&&tree->rchild->data==x)
{
*parent=tree;
*p=tree->rchild;
return;
}
find(tree->lchild,x,&(*p),&(*parent),tt);
find(tree->lchild,x,&(*p),&(*parent),tt);
}
int main()
{
BTree t;
CreatBTree(&t);
int m;
scanf("%d",&m);
int x=0;
for(int i=0;i<m;i++)
{
flag=0;
BTNode *p=NULL,*parent=NULL;
scanf("%d",&x);
find(t,x,&p,&parent,t);
if(p==NULL||parent==NULL)
{
printf("0\n");
}
else
{
printf("%d\n",parent->data);
}
}
return 0;
}

