#include #include #include using namespace std; int T,n,kll,p; bool vis[55]; struct graph { int tot; int hd[55]; int nxt[2505],to[2505]; void add(int u,int v) { nxt[++tot]=hd[u]; hd[u]=tot; to[tot]=v; return ; } void dlt(int u) { hd[u]=nxt[hd[u]]; return ; } void clear() { tot=0; memset(hd,0,sizeof(hd)); return ; } }g; int k(int now) { while(true) { int v=g.to[g.hd[now]]; if(vis[v]==true) g.dlt(now); else { g.dlt(now); vis[v]=true; if(v==kll) return 1; if(--p<=2) return 2; int val=k(v); if(val==1) return 1; if(val==2) return 2; break; } } return 0; } int main() { scanf("%d",&T); while(T--) { scanf("%d",&n); g.clear(); memset(vis,0,sizeof(vis)); for(int i=1;i<=n;i++) { int sf; scanf("%d",&sf); if(sf==1) kll=i; } for(int i=1;i<=n;i++) { int w[55]; for(int j=1;j<=n;j++) scanf("%d",&w[j]); for(int j=n;j>=1;j--) if(w[j]!=i||i==kll) g.add(i,w[j]); } bool flag=true; p=n; while(true) { int val=k(kll); if(val==1){flag=false;break;} if(val==2) break; } if(flag==true) puts("langren"); else puts("lieren"); } return 0; }