//只需求出两个节点到达公共祖先节点所走的次数,只要求出节点到最原始祖先节点的次数
//并差集
#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;
}