using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AOJ1_11_C
{
    class Program
    {
        static int _numberOfDice = int.Parse(Console.ReadLine());
        static int[][] _diceCase = new int[_numberOfDice][];
        static int[] _originalDice = new int[6];
        static int[] _dice_i = new int[6];
        static int _differenceCounter = 0;
        static void Main(string[] args)
        {
            Dice.MakeDice();
            _originalDice = _diceCase[0];
            for (int i = 1; i < _numberOfDice; ++i)
            {
                _dice_i = _diceCase[i];
                if (Dice.RoundRobin(_originalDice, _dice_i))
                {
                    Console.WriteLine("No");
                    break;
                }
                else
                {
                    ++_differenceCounter;
                }
                if (_differenceCounter == _numberOfDice - 1)
                {
                    Console.WriteLine("Yes");
                    break;
                }
            }
        }
        class Dice
        {
            internal static void MakeDice()
            {
                for (int i = 0; i < _numberOfDice; ++i)
                {
                    _diceCase[i] = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
                }
            }
            internal static void RollDice(int[] a_Dice, string order)
            {
                int tmp = a_Dice[0];
                if (order == "E")
                {
                    a_Dice[0] = a_Dice[3];
                    a_Dice[3] = a_Dice[5];
                    a_Dice[5] = a_Dice[2];
                    a_Dice[2] = tmp;
                }
                else if (order == "N")
                {
                    a_Dice[0] = a_Dice[1];
                    a_Dice[1] = a_Dice[5];
                    a_Dice[5] = a_Dice[4];
                    a_Dice[4] = tmp;
                }
                else if (order == "S")
                {
                    a_Dice[0] = a_Dice[4];
                    a_Dice[4] = a_Dice[5];
                    a_Dice[5] = a_Dice[1];
                    a_Dice[1] = tmp;
                }
                else if (order == "W")
                {
                    a_Dice[0] = a_Dice[2];
                    a_Dice[2] = a_Dice[5];
                    a_Dice[5] = a_Dice[3];
                    a_Dice[3] = tmp;
                }
            }
            internal static void SpinDice(int[] a_Dice, string order)
            {
                int tmp = a_Dice[1];
                if (order == "R")
                {
                    a_Dice[1] = a_Dice[2];
                    a_Dice[2] = a_Dice[4];
                    a_Dice[4] = a_Dice[3];
                    a_Dice[3] = tmp;
                }
                else if (order == "L")
                {
                    a_Dice[1] = a_Dice[3];
                    a_Dice[3] = a_Dice[1];
                    a_Dice[4] = a_Dice[2];
                    a_Dice[2] = tmp;
                }
            }
            internal static bool MatchDice(int[] dice1, int[] dice2)
            {
                int top1 = dice1[0];
                int flont1 = dice1[1];
                int right1 = dice1[2];
                int left1 = dice1[3];
                int buck1 = dice1[4];
                int bottom1 = dice1[5];
                int top2 = dice2[0];
                int flont2 = dice2[1];
                int right2 = dice2[2];
                int left2 = dice2[3];
                int buck2 = dice2[4];
                int bottom2 = dice2[5];
                if (top1 == top2 && flont1 == flont2 && right1 == right2
                    && left1 == left2 && buck1 == buck2 && bottom1 == bottom2)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            static internal bool SideCheck(int[] dice1, int[] dice2)
            {
                bool sideNumberMatch = false;
                for (int i = 0; i < 4; ++i)
                {
                    sideNumberMatch = MatchDice(dice1, dice2);
                    if (sideNumberMatch == true)
                    {
                        return true;
                    }
                    SpinDice(dice2, "R");
                }
                return false;
            }
            static internal bool RoundRobin(int[] dice1, int[] dice2)
            {
                bool match_or_Not = false;
                match_or_Not = SideCheck(dice1, dice2);
                if (match_or_Not == true)
                {
                    return true;
                }
                RollDice(dice2, "N");
                match_or_Not = SideCheck(dice1, dice2);
                if (match_or_Not == true)
                {
                    return true;
                }
                RollDice(dice2, "W");
                match_or_Not = SideCheck(dice1, dice2);
                if (match_or_Not == true)
                {
                    return true;
                }
                RollDice(dice2, "W");
                match_or_Not = SideCheck(dice1, dice2);
                if (match_or_Not == true)
                {
                    return true;
                }
                RollDice(dice2, "W");
                match_or_Not = SideCheck(dice1, dice2);
                if (match_or_Not == true)
                {
                    return true;
                }
                RollDice(dice2, "N");
                match_or_Not = SideCheck(dice1, dice2);
                if (match_or_Not == true)
                {
                    return true;
                }
                return false;
            }
        }
    }
}




Measured memory_bytes: 18320