#include <iostream>
#include <string>
#include <vector>
using namespace std;

class DICE{
private:
	int temp;
	
public:
    int ii,iii,ji,ij,iFront;
	int ans,foo,fooo,ansDice3,ansDice4;
	int dice[100][6];
	int cpyDice[6],cpyDice2[6];
	/*
	void cpy(){
		for(ii=0;ii<6;ii++){
			cpyDice[ii]=dice[ii];
		}
	}
	*/
	void rollN(){roll(1,5,4);}
	void rollS(){roll(4,5,1);}
	void rollE(){roll(3,5,2);}
	void rollW(){roll(2,5,3);}
	void right(){rollright(1,2,4,3);}
	void rollright(int a,int b,int c,int d){
		temp=dice[iFront][a];dice[iFront][a]=dice[iFront][b];dice[iFront][b]=dice[iFront][c];dice[iFront][c]=dice[iFront][d];dice[iFront][d]=temp;
	}
		//2->3 3->5 5-4 4-2
	void roll(int a,int b,int c){
		temp=dice[iFront][0];dice[iFront][0]=dice[iFront][a];
		dice[iFront][a]=dice[iFront][b];dice[iFront][b]=dice[iFront][c];dice[iFront][c]=temp;
	}
	void fi(char ch){
		if(ch=='N'){rollN();}
		if(ch=='S'){rollS();}
		if(ch=='W'){rollW();}
		if(ch=='E'){rollE();}
	}
	void NE(){
		for(ii=0;ii<4;ii++){
			for(iii=0;iii<4;iii++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/

				rollE();
			}
			rollN();
		}
	}
	void NW(){
		for(ii=0;ii<4;ii++){
			//rollN();
			for(ji=0;ji<4;ji++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/
				for(ij=0;ij<100;ij++){
					if(dice[ij][0]!=0 && ij!=iFront){
						if(dice[iFront][0]==dice[ij][0] && dice[iFront][1]==dice[ij][1] && dice[iFront][2]==dice[ij][2] && dice[iFront][3]==dice[ij][3] && dice[iFront][4]==dice[ij][4] && dice[iFront][5]==dice[ij][5]){
							ansDice4++;
						}
					}
				}
				rollW();
			}
			rollN();
		}
	}
	void SE(){
		for(ii=0;ii<4;ii++){
			//rollS();
			for(ji=0;ji<4;ji++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/

				rollE();
			}
			rollS();
		}
	}
	void SW(){
		for(ii=0;ii<4;ii++){
			//rollS();
			
			for(ji=0;ji<4;ji++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/
				rollW();
			}
			rollS();
		}
	}
	void EN(){
		for(ii=0;ii<4;ii++){
			for(iii=0;iii<4;iii++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/
				rollN();
			}
			rollE();
		}
	}
	void ES(){
		for(ii=0;ii<4;ii++){
			for(iii=0;iii<4;iii++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/
				rollS();
			}
			rollE();
		}
	}
	void WN(){
		for(ii=0;ii<4;ii++){
			for(iii=0;iii<4;iii++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/
				rollN();
			}
			rollW();
		}
	}
	void WS(){
		for(ii=0;ii<4;ii++){
			for(iii=0;iii<4;iii++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/
				rollS();
			}
			rollW();
		}
	}
	void rR(){
		for(ji=0;ji<4;ji++){
			for(ii=0;ii<4;ii++){
				/*
				if(foo==dice[0] && fooo==dice[1]){
					ans=dice[2];
				}
				if(dice[0]==dice2[0] && dice[1]==dice2[1] && dice[2]==dice2[2] && dice[3]==dice2[3] && dice[4]==dice2[4] && dice[5]==dice2[5]){
					ansDice3=1;
				}
				*/
				right();
			}
			rollN();
		}

	}
};



int main(){
	DICE c;
	for(int i=0;i<100;i++){
		for(int ii=0;ii<6;ii++){
			c.dice[i][ii]=0;
		}
	}

	c.iFront=0;
	c.ansDice3=0;
	int n;cin>>n;
	for(int i1=0;i1<n;i1++){
		for(int i=0;i<6;i++){
			cin>>c.dice[i1][i];
	}
	}
	/*
	for(int i=0;i<6;i++){
		cin>>c.dice2[i];
	}
	/*
    int q,front,up;cin>>q;
	for(int i=0;i<q;i++){
		
			c.cpy();
		
		cin>>up>>front;
		for(int in=0;in<6;in++){
			if(c.dice[in]==up){
				c.foo=c.dice[in];
			}
			if(c.dice[in]==front){
				c.fooo=c.dice[in];
			}
		}
		*/

		//c.foo=c.dice[up-1];
		//c.fooo=c.dice[front-1];
		//c.ans=0;
		/*if(c.foo==c.cpyDice[0] && c.fooo==c.cpyDice[1]){
					c.ans=c.cpyDice[2];
					cout<<c.ans<<endl;
				}*/
		int i2=0;
		while(1){
			c.ansDice4=0;
		c.rR();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.NE();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.NW();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.SE();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.SW();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.EN();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.ES();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.WN();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		c.WS();
		if(c.ansDice4!=0 ){
			cout<<"No"<<endl;
			break;
		}
		i2++;
		if(i2==n){
		cout<<"Yes"<<endl;
		break;
		}
		c.iFront++;
		}
		//int aa;cin>>aa;
		

	//int aa;cin>>aa;
		
	return 0;
}

//c.dice[0]==c.dice2[0] && c.dice[1]==c.dice2[1] && c.dice[2]==c.dice2[2] && c.dice[3]==c.dice2[3] && c.dice[4]==c.dice2[4] && c.dice[5]==c.dice2[5]
/*
  N 1->2 2->6 6->5 5->1
  S 1->5 5->6 6->2 2->1
  W 1->3 3->6 6->4 4->1
  E 1->4 4->6 6->3 3->1
  */

Measured memory_bytes: 3096