#include #include #include using namespace std; const int N=51; struct lst{ int nxt,num; }e[N][N]; int head[N],lang,lie,last,numl,dead[N],T,n; int read(){ int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){ if(c=='-') f=-1; c=getchar(); } while(c>='0'&&c<='9'){ x=(x<<3)+(x<<1)+c-'0'; c=getchar(); } return x*f; } void clear(){ memset(head,0,sizeof(head)); memset(dead,0,sizeof(dead)); } int main(){ T=read(); while(T--){ n=read(); for(int i=1;i<=n;i++){ int x=read(); if(x) numl=i,last=i; } lie=n-1,lang=1; for(int i=1;i<=n;i++){ head[i]=1; for(int j=1;j<=n;j++){ int x=read(); e[i][j]=(lst){j+1,x}; if(j==n) e[i][j].nxt=0; } } while(1){ if(last!=numl){//猎人先刀再死 dead[last]=1;lie--; } if(lang==1&&lie==1){ printf("langren\n"); break; } int tmp=e[last][head[last]].num; while(dead[tmp]||(tmp==last&&last!=numl)){ head[last]=e[last][head[last]].nxt; tmp=e[last][head[last]].num; } //head[last]=e[last][head[last]].nxt;//nxt也要死 if(tmp==numl){ printf("lieren\n"); break; } last=tmp; } if(T) clear(); } return 0; }