#include <iostream>
#include <vector>
#include <algorithm>
#include <bits/stdc++.h>
using namespace std;

class Dice {
public:
	int dice[6];
};


int check(Dice d1,Dice d2){
	for(int i=0;i<4;i++){
        int tmp1=d1.dice[0];
        d1.dice[0]=d1.dice[2], d1.dice[2]=d1.dice[5], d1.dice[5]=d1.dice[3], d1.dice[3]=tmp1;
        for(int j=0;j<4;j++){
            int tmp2=d1.dice[0];
            d1.dice[0]=d1.dice[1], d1.dice[1]=d1.dice[5], d1.dice[5]=d1.dice[4], d1.dice[4]=tmp2;
            for(int k=0;k<4;k++){
                int tmp3=d1.dice[1];
                d1.dice[1]=d1.dice[2], d1.dice[2]=d1.dice[4], d1.dice[4]=d1.dice[3], d1.dice[3]=tmp3;
				for(int i = 0; i < 6; i++){
					if(d1.dice[i] != d2.dice[i]){
						i = 6;
					}
					if(d1.dice[i] == d2.dice[i] and i == 5){
						return 1;
					}
                }
            }
        }
    }
	return -1;
}

int main(){
	int n;
	cin >> n;
	Dice di[n];
	for(int i = 0; i < n; i++){
		for(int j = 0; j < 6; j++){
			cin >> di[i].dice[j];
		}
	}
	int eck = 0;
	for(int i = 0; i < n; i++){
		for(int j = 0; j < 6; j++){
			if(i != j) {
				int ch = check(di[i],di[j]);
				if(ch == 1) eck = 1;
			}
		}
	}
	if( eck == 1 ) cout << "No" << endl;
	else cout << "Yes" << endl;
	return 0;
}     