#include <iostream>
#include<queue>
#include<vector>
#include<map>
//1151
const int N = 1e4+5;
using namespace std;
int m,n;
map<int,int> m1;
int main()
{
freopen("1151.txt","r",stdin);
cin>>m>>n;
int a, b, pre[N];
for(int i = 0;i<n;i++){
cin>>a;
m1[a] = i;
}
for(int i = 0; i <n;i++){
cin>>pre[i];
}
int sa, sb, sc;
while(m--){
cin>>sa>>sb;
if(m1.find(sa) == m1.end() && m1.find(sb) == m1.end()){
printf("ERROR: %d and %d are not found.\n",sa,sb);
continue;
}
if(m1.find(sa) == m1.end()){
printf("ERROR: %d is not found.\n",sa);
continue;
}
if(m1.find(sb) == m1.end()){
printf("ERROR: %d is not found.\n",sb);
continue;
}
int x =sa, y =sb;
sa = m1[sa], sb = m1[sb];
for(int i = 0;i < n;i++){
sc=m1[pre[i]];
if((sc>sa && sc<sb) || (sc>sb && sc < sa)){
printf("LCA of %d and %d is %d.\n",x,y,pre[i]);
break;
}
if(sc == sa){
printf("%d is an ancestor of %d.\n",x,y);
break;
}
if(sc == sb){
printf("%d is an ancestor of %d.\n",y,x);
break;
}
}
}
return 0;
}