#include<stdio.h>
#include<memory.h>
const int MAX=50021;
int hash [50022][7],sel[50022],a[100001][7];
int main()
{
int N,i,j,sum,o1,o3,k;
memset(hash,0,sizeof(hash));
memset(sel,0,sizeof(sel));
scanf("%d",&N);
for(i=0;i<N;i++)
for(j=0;j<6;j++)
scanf("%d",&a[i][j]);
o3=0;
for(i=0;i<N;i++) //*********算法实现*******
{
sum=0;
for(j=0;j<6;j++)
sum+=a[i][j];
sum=sum%MAX; //因为sum可能很大,所以对一个大素数取模,这样减小hash数列的范围。
if(sel[sum]==0)
{
sel[sum]=1;
for(int k=0;k<6;k++)
hash[sum][k]=a[i][k]; //sel数组用来判断此时hash数组上对应的是否已存在,不存在则记录1,且将此部分赋给hash数组。
}
else //如该位置上已存在,则比较是否相同
{
for(k=0;k<6;k++)
{
o1=0;
for(j=0;j<6;j++)
if(hash[sum][k]==a[i][j])
{
o1=1;
break;
}
if(o1==0)
break;
}
if(o1==1)
{
o3=1;
printf("Twin snowflakes found.\n");
break;
}
}
}
if(o3==0)
printf("No two snowflakes are alike.\n");
return 0;
}
//题目大意就是找到两片相同的雪花!我发现只比较有没有完全相同长度的臂就可以了,不需要按时针顺序比较,可能是题目不严谨。