#include <stdio.h>
//#define DEBUG

typedef struct dice{
	int TOP ;
	int FRONT ;
	int RIGHT ;
	int LEFT ;
	int BACK ;
	int BOTTOM ;
}DICE;

#ifdef DEBUG
void showdice(DICE *);				//???????¢??????¨
#endif

void dicescan(DICE *);			//?????????????????????????????????

void rotateN(DICE *);			//N?????¢
void rotateS(DICE *);			//S?????¢
void rotateE(DICE *);			//E?????¢
void rotateW(DICE *);			//W?????¢
void rotateCW(DICE *);			//TOP-BOTTOM????????¨??????????¨???????????????¢

int compare (DICE * , DICE *);	//?????????????????????????????????????????????????????¢??°

int main(void){

	int n = 0 ;					//??????????????????????????????
	int i = 0 ;					//???????????°
	int j = 0 ;

	scanf("%d", &n);

	DICE DICEcase[n];			//n??????????´??????????DICE?????????????????£?¨?

	/*n??????????????????????????????*/
	for(i = 0 ; i < n ; i++){
		dicescan(&DICEcase[i]);
/*#ifdef DEBUG
		printf("%d??????????????????\n",i+1);
		showdice(&DICEcase[i]);
#endif*/
	}

	 /*DICE?????????????????????????????¨??????????????????*/
	for( i = 0 ; i < n ; i++){
		for( j = i+1 ; j < n ; j++){
			if(compare(&DICEcase[i],&DICEcase[j])){		//????????????????????????????????????
				printf("No\n");
				return 0;
			}
		}
	}

	printf("Yes\n");

	return 0;
}


/*compare??¢??°???????????????????????????????????????????????????????????????????????????????????????????????????*/
/*????????????1??????????????°0?????????*/
int compare (DICE *DICE1 , DICE *DICE2){

	int i = 0 ;					//???????????°

	/*DICE1????????¬??¨???????????¢?????????*/
	/*??????DICE1.TOP???DICE2????????¢???????????¢?????\??????????????????????????¢??????*/

	if(DICE1 -> TOP == DICE2 -> TOP){
		/*nop*/
	}
	else if(DICE1->TOP == DICE2->FRONT){
		rotateN(DICE2);		//?????¢??????N?????¢
	}
	else if(DICE1->TOP == DICE2->RIGHT){
		rotateW(DICE2);		//?????¢??????W?????¢
	}
	else if(DICE1->TOP == DICE2->LEFT){
		rotateE(DICE2);		//?????¢??????E?????¢
	}
	else if(DICE1->TOP == DICE2->BACK){
		rotateS(DICE2);		//?????¢??????S?????¢
	}
	else if(DICE1->TOP == DICE2->BOTTOM ){
		rotateN(DICE2);
		rotateN(DICE2);		//?????¢??????N?????¢2???
	}
	else{
		return 0 ;				//???????????????????????°?????´????????????????????¨????????????
			}

	/*?????¢????????????*/
	if( DICE1->BOTTOM != DICE2->BOTTOM ){
		return 0 ;				//?????¢????????´??????????????°?????????????????¨?¢????
	}

	/*?????¨?????¶??????TOP??¨BOTTOM????????´*/

	while(1){
		if( DICE1->FRONT == DICE2->FRONT){	//FRONT????????´??????????¬???????????????????
			break;
		}
		else{
			rotateCW(DICE2);			//?????´??????????????°CW?????¢????????£????????????
			i++;
		}
		if( i > 3){						//4????????????????????´??????????????°
			return 0;			//DICE1.FRONT??????????????????????????§?????????????????¨?¢????
		}
	}

	/*?????¨?????¶??????TOP???FRONT???BOTTOM????????´*/
	/*??????????????????????????? Dice I ??¨????????¨?¨????????????????????????¨????????¢?????°????????°??????????????¨????????????(?????????????????¨??????)*/
	/*????????\????????????????????¢?????????????????????????????§??????????????¢?????°??????????????????*/


		if( (DICE1->RIGHT == DICE2->RIGHT) && (DICE1->LEFT == DICE2->LEFT) && (DICE1->BACK == DICE2->BACK) ){
			return 1;
		}
		else{
			return 0;
		}


	/*???????????§??\???????????£????????¨??????*/
	printf("error\n");

	return 0;

}//compare??¢??°????????????

void rotateN(DICE *rotate){
	int tmp = 0;

	tmp = rotate -> BACK ;
	rotate -> BACK = rotate -> TOP ;
	rotate -> TOP = rotate -> FRONT ;
	rotate -> FRONT = rotate -> BOTTOM ;
	rotate -> BOTTOM = tmp ;
}
void rotateS(DICE *rotate){
	/*N?????¢???3???*/
	rotateN(rotate);
	rotateN(rotate);
	rotateN(rotate);
}

void rotateE(DICE *rotate){
	int tmp = 0;

	tmp = rotate -> TOP ;
	rotate -> TOP = rotate -> LEFT ;
	rotate -> LEFT = rotate -> BOTTOM ;
	rotate -> BOTTOM = rotate -> RIGHT ;
	rotate -> RIGHT  = tmp ;
}
void rotateW(DICE *rotate){
	/*E?????¢???3???*/
	rotateE(rotate);
	rotateE(rotate);
	rotateE(rotate);
}

void rotateCW(DICE *rotate){
	int tmp = 0;

	tmp = rotate -> BACK ;
	rotate -> BACK = rotate -> LEFT;
	rotate -> LEFT = rotate -> FRONT ;
	rotate -> FRONT = rotate -> RIGHT;
	rotate -> RIGHT = tmp ;
}

void dicescan(DICE *scan){
	scanf("%d",&scan -> TOP);
	scanf("%d",&scan -> FRONT);
	scanf("%d",&scan -> RIGHT);
	scanf("%d",&scan -> LEFT);
	scanf("%d",&scan -> BACK);
	scanf("%d",&scan -> BOTTOM);
}

Measured memory_bytes: 580