/*
分析:
简单并查集。
在网吧夜市刷题,桑不起呀,囧囧囧~~~
2012-11-19
*/
分析:
简单并查集。
在网吧夜市刷题,桑不起呀,囧囧囧~~~
2012-11-19
*/
#include"stdio.h"
#include"string.h"
#define N 100011
int n,m;
int pre[N];
int dis[N];
void build()
{int i;for(i=1;i<=n;i++) {pre[i]=i;dis[i]=0;}
}
int find(int k)
{int temp;if(pre[k]==k) return k;temp=pre[k];pre[k]=find(temp);dis[k]+=dis[temp];return pre[k];
}
void Union(int a,int b)
{pre[a]=b;dis[a]=1;
}
int main()
{int i,l;int a,b;int t;while(scanf("%d%d",&n,&m),n||m){build();for(i=1;i<n;i++) {scanf("%d%d",&a,&b);Union(b,a);}for(i=0;i<m;i++){scanf("%d%d",&a,&b);t=find(a);t=find(b);if(dis[a]<=dis[b]) printf("lxh\n");else printf("pfz\n");}}return 0;
}