模拟可过(应该是吧)
#include<bits/stdc++.h>
using namespace std;
#define int long long
int n;
template<typename T>
T min_(T a,T b){
if(a<b){
return a;
}else{
return b;
}
}
struct _snow_{
int _1,_2,_3,_4,_5,_6;
bool operator<(_snow_ x){
if(_1!=x._1)return _1<x._1;
if(_2!=x._2)return _2<x._2;
if(_3!=x._3)return _3<x._3;
if(_4!=x._4)return _4<x._4;
if(_5!=x._5)return _5<x._5;
if(_6!=x._6)return _6<x._6;
}
bool operator==(_snow_ x){
return _1==x._1&&_2==x._2&&_3==x._3&&_4==x._4&&_5==x._5&&_6==x._6;
}
void fun(){
_snow_ s1={_1,_2,_3,_4,_5,_6};
_snow_ s2={_6,_1,_2,_3,_4,_5};
_snow_ s3={_5,_6,_1,_2,_3,_4};
_snow_ s4={_4,_5,_6,_1,_2,_3};
_snow_ s5={_3,_4,_5,_6,_1,_2};
_snow_ s6={_2,_3,_4,_5,_6,_1};
*this=min_(s1,min_(s2,min_(s3,min_(s4,min_(s5,s6)))));
}
}a[100005];
signed main(){
cin>>n;
srand(time(0));
for(int i=1;i<=n;i++){
cin>>a[i]._1>>a[i]._2>>a[i]._3>>a[i]._4>>a[i]._5>>a[i]._6;
a[i].fun();
_snow_ x=a[i];
swap(a[i]._1,a[i]._6);swap(a[i]._2,a[i]._5);swap(a[i]._3,a[i]._4);
a[i].fun();
a[i]=min_(a[i],x);
}
sort(a+1,a+n+1);
for(int i=1;i<=n-1;i++){
if(a[i]==a[i+1]){
cout<<"Twin snowflakes found.";
return 0;
}
}
cout<<"No two snowflakes are alike.";
return 0;
}