#include <string.h>
#include <stdio.h>

typedef struct _DICE DICE;
struct _DICE{
    int a[6];
    char b[101];
};



int main(int argc, const char * argv[]) {
    DICE Dice[100];
    DICE DiceA;
    int i,j,k,l=0,m=0,n,a,b;
    int a1,a2,a3,a4;
    
    
    scanf("%d",&n);
    
    for(i=0;i<n;i++){
        for(j=0;j<6;j++){
            scanf("%d",&Dice[i].a[j]);
        }
        //ダイスを１つ入力するごとに、回転体化させる
        a1=Dice[i].a[1];
        a2=Dice[i].a[2];
        a3=Dice[i].a[3];
        a4=Dice[i].a[4];
        Dice[i].a[1]=a1;
        Dice[i].a[2]=a3;
        Dice[i].a[3]=a4;
        Dice[i].a[4]=a2;
    }
    
//    for(i=0;i<n;i++){
//        for(k=0;k<6;k++){//確認用
//            printf("%d ",Dice[i].a[k]);
//        }
//        printf("\n");
//    }
    
    for(a=0;a<n;a++){
        for(b=a+1;b<n;b++){
            for(i=0;i<6;i++){
                //ここでダイスの中身を入れ替え
                if(i==0){
                    DiceA.a[0]=Dice[b].a[0];
                    DiceA.a[1]=Dice[b].a[1];
                    DiceA.a[2]=Dice[b].a[2];
                    DiceA.a[3]=Dice[b].a[3];
                    DiceA.a[4]=Dice[b].a[4];
                    DiceA.a[5]=Dice[b].a[5];
                }else if(i==1){
                    DiceA.a[0]=Dice[b].a[1];
                    DiceA.a[1]=Dice[b].a[0];
                    DiceA.a[2]=Dice[b].a[4];
                    DiceA.a[3]=Dice[b].a[5];
                    DiceA.a[4]=Dice[b].a[2];
                    DiceA.a[5]=Dice[b].a[3];
                }else if(i==2){
                    DiceA.a[0]=Dice[b].a[4];
                    DiceA.a[1]=Dice[b].a[0];
                    DiceA.a[2]=Dice[b].a[3];
                    DiceA.a[3]=Dice[b].a[5];
                    DiceA.a[4]=Dice[b].a[1];
                    DiceA.a[5]=Dice[b].a[2];
                }else if(i==3){
                    DiceA.a[0]=Dice[b].a[2];
                    DiceA.a[1]=Dice[b].a[0];
                    DiceA.a[2]=Dice[b].a[1];
                    DiceA.a[3]=Dice[b].a[3];
                    DiceA.a[4]=Dice[b].a[5];
                    DiceA.a[5]=Dice[b].a[4];
                }else if(i==4){
                    DiceA.a[0]=Dice[b].a[3];
                    DiceA.a[1]=Dice[b].a[0];
                    DiceA.a[2]=Dice[b].a[2];
                    DiceA.a[3]=Dice[b].a[5];
                    DiceA.a[4]=Dice[b].a[4];
                    DiceA.a[5]=Dice[b].a[1];
                }else if(i==5){
                    DiceA.a[0]=Dice[b].a[5];
                    DiceA.a[1]=Dice[b].a[1];
                    DiceA.a[2]=Dice[b].a[4];
                    DiceA.a[3]=Dice[b].a[3];
                    DiceA.a[4]=Dice[b].a[2];
                    DiceA.a[5]=Dice[b].a[0];
                }
                
                for(j=0;j<4;j++){
                    //ここでダイスを回転させる
                    a1=DiceA.a[1];
                    a2=DiceA.a[2];
                    a3=DiceA.a[3];
                    a4=DiceA.a[4];
                    
                    if(j==0){
                        DiceA.a[1]=a1;
                        DiceA.a[2]=a2;
                        DiceA.a[3]=a3;
                        DiceA.a[4]=a4;
                    }else if(j==1){
                        DiceA.a[2]=a1;
                        DiceA.a[3]=a2;
                        DiceA.a[4]=a3;
                        DiceA.a[1]=a4;
                    }else if(j==2){
                        DiceA.a[3]=a1;
                        DiceA.a[4]=a2;
                        DiceA.a[1]=a3;
                        DiceA.a[2]=a4;
                    }else if(j==3){
                        DiceA.a[4]=a1;
                        DiceA.a[1]=a2;
                        DiceA.a[2]=a3;
                        DiceA.a[3]=a4;
                    }
                    
                    
                    for(k=0;k<6;k++){//回転したダイスが１個目のダイスと一致した時l=6
                        if(Dice[a].a[k]==DiceA.a[k]){
                            l++;
                        }
                    }
                    
//                    for(k=0;k<6;k++){//確認用
//                        printf("%d ",DiceA.a[k]);
//                    }
//                    printf("\n");
                    
                    
                    if(l==6){
                        m=1;//同じサイコロが1組でも含まれる場合m=1
                    }
                    l=0;
                }
            }
        }
    }
    if(m==1){
        printf("No\n");
    }else{
        printf("Yes\n");
    }
    
    
    return 0;
}



Measured memory_bytes: 2112