//只需求出两个节点到达公共祖先节点所走的次数,只要求出节点到最原始祖先节点的次数
//并差集
#include<stdio.h>
int f[100002];
int find(int a)
{
int cont=0;
while(f[a]!=a)
{
cont++;
a=f[a];
}
return cont;
}
int main()
{
int i,a,b,n,m;
while(scanf("%d%d",&n,&m),n||m)
{
for(i=1;i<=n;i++)
f[i]=i;
for(i=1;i<n;i++)
{
scanf("%d%d",&a,&b);
f[b]=a;
}
for(i=0;i<m;i++)
{
scanf("%d%d",&a,&b);
a=find(a);
b=find(b);
if(b<a)printf("pfz\n");
else printf("lxh\n");
}
}
return 0;
}