/*
一个雪花是一个结构体,输入一个雪花先预处理一下
就是找出雪花的最小序列,
再用sort函数对雪花排序(利用运算符重载可以给结构体排序)
然后再找有没有重复的雪花
*/
#include<cstdio>
#include<algorithm>
using namespace std;
struct node
{
int a[6];
}xue[100010],term,term1,term2;
bool operator < (const node &x,const node &y)
{
for(int i=0;i<5;i++)if(x.a[i]!=y.a[i])return x.a[i]<y.a[i];
return x.a[5]<y.a[5];
}
bool operator == (const node &x,const node &y)
{
return((x.a[0]==y.a[0])&&(x.a[1]==y.a[1])&&(x.a[2]==y.a[2])&&(x.a[3]==y.a[3])&&(x.a[4]==y.a[4])&&(x.a[5]==y.a[5]));
}
int main()
{
int T,n,i,j,f,min,k;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=0;j<6;j++)scanf("%d",&term.a[j]);//输入一片雪花
xue[i]=term;
for(j=0,min=(1<<31)-1;j<6;j++)if(term.a[j]<min)min=term.a[j];//找出最小的一枝
for(j=0;j<6;j++)
if(term.a[j]==min)//找出最小的序列
{
for(k=0;k<6;k++)term1.a[k]=term.a[(j+k)%6];//顺时针
if(term1<xue[i])xue[i]=term1;
for(k=0;k<6;k++)term2.a[k]=term.a[(j-k+6)%6];//逆时针
if(term2<xue[i])xue[i]=term2;
}
}
sort(xue,xue+n);//排序
for(f=0,i=1;i<n;i++)
{
if(xue[i]==xue[i-1])//有一样就的跳出
{
f=1;
break;
}
}
if(f)printf("Twin snowflakes found.\n");//输出
else printf("No two snowflakes are alike.\n");
}
return 0;
}