#include<bits/stdc++.h>

using namespace std;

typedef struct dice
{
    int a1,a2,a3,a4,a5,a6;
    int up=1;
    dice(int q,int w,int e,int r,int t,int y):a1(q),a2(w),a3(e),a4(r),a5(t),a6(y) {}
    dice() {}
} D;

int c[1000];

bool same(int *a,int *b)
{
    int a2[4];
    a2[0]=a[2];
    a2[1]=a[3];
    a2[2]=a[5];
    a2[3]=a[4];

    int b2[4];
    int ok=0;

    if(b[1]==a[1])
    {
        b2[0]=b[2];
        b2[1]=b[3];
        b2[2]=b[5];
        b2[3]=b[4];
        int k=0;
        for(int i=0; i<4; i++)
        {
            int j;
            for(j=0; j<4; j++)
            {
                if(b2[j]!=a2[(i+j)%4])
                    break;
            }
            if(j==4)
            {
                k=1;
                break;
            }
        }
        if(k&&b[6]==a[6])
            ok=1;
    }
    else if(b[2]==a[1])
    {
        b2[0]=b[6];
        b2[1]=b[3];
        b2[2]=b[1];
        b2[3]=b[4];
        int k=0;
        for(int i=0; i<4; i++)
        {
            int j;
            for(j=0; j<4; j++)
            {
                if(b2[j]!=a2[(i+j)%4])
                    break;
            }
            if(j==4)
            {
                k=1;
                break;
            }
        }
        if(k&&b[5]==a[6])
            ok=1;
    }
    else if(b[3]==a[1])
    {
        b2[0]=b[2];
        b2[1]=b[6];
        b2[2]=b[5];
        b2[3]=b[1];
        int k=0;
        for(int i=0; i<4; i++)
        {
            int j;
            for(j=0; j<4; j++)
            {
                if(b2[j]!=a2[(i+j)%4])
                    break;
            }
            if(j==4)
            {
                k=1;
                break;
            }
        }
        if(k&&b[4]==a[6])
            ok=1;
    }
    else if(b[4]==a[1])
    {
        b2[0]=b[2];
        b2[1]=b[1];
        b2[2]=b[5];
        b2[3]=b[6];
        int k=0;
        for(int i=0; i<4; i++)
        {
            int j;
            for(j=0; j<4; j++)
            {
                if(b2[j]!=a2[(i+j)%4])
                    break;
            }
            if(j==4)
            {
                k=1;
                break;
            }
        }
        if(k&&b[3]==a[6])
            ok=1;
    }
    else if(b[5]==a[1])
    {
        b2[0]=b[1];
        b2[1]=b[3];
        b2[2]=b[6];
        b2[3]=b[4];
        int k=0;
        for(int i=0; i<4; i++)
        {
            int j;
            for(j=0; j<4; j++)
            {
                if(b2[j]!=a2[(i+j)%4])
                    break;
            }
            if(j==4)
            {
                k=1;
                break;
            }
        }
        if(k&&b[2]==a[6])
            ok=1;
    }
    else if(b[6]==a[1])
    {
        b2[0]=b[2];
        b2[1]=b[4];
        b2[2]=b[5];
        b2[3]=b[3];
        int k=0;
        for(int i=0; i<4; i++)
        {
            int j;
            for(j=0; j<4; j++)
            {
                if(b2[j]!=a2[(i+j)%4])
                    break;
            }
            if(j==4)
            {
                k=1;
                break;
            }
        }
        if(k&&b[1]==a[6])
            ok=1;
    }
    int maxn=0;
    for(int i=0; i<1000; i++)
    {
        maxn=max(maxn,c[i]);
    }
    if(maxn>=6||ok)
        return true;
    return false;
}

int main()
{


//    freopen("in.txt","r",stdin);
    memset(c,0,sizeof(c));
    int a[100][10];
    int n;
    cin>>n;
    int r=0;
    while(n--)
    {
        for(int i=1; i<=6; i++)
            cin>>a[r][i];
        r++;
    }
    int ok=1;
    for(int i=0; i<r; i++)
    {
        for(int j=i+1; j<r; j++)
            if(same(a[i],a[j]))
            {
                ok=0;
                break;
            }
        if(!ok)
            break;
    }



    if(ok)
        cout<<"Yes"<<endl;
    else
        cout<<"No"<<endl;

}





Measured memory_bytes: 3124