class Dice

  attr_accessor :dice, :ptn

  @_ptn_list = []

  def initialize(_input_square)
    @dice = _input_square
    @ptn = []
  end

  def ptn_save
    ptn << dice.join.to_i
  end

  def ptn_join
    @ptn = ptn.sort.join.to_i
  end

  def roll(str, num = 1, save = false)
    num.times do
      case str
      when "n"
        dice[0], dice[1], dice[4], dice[5] = dice[1], dice[5], dice[0], dice[4]
      when "s"
        dice[0], dice[1], dice[4], dice[5] = dice[4], dice[0], dice[5], dice[1]
      when "w"
        dice[0], dice[2], dice[3], dice[5] = dice[2], dice[5], dice[0], dice[3]
      when "e"
        dice[0], dice[2], dice[3], dice[5] = dice[3], dice[0], dice[5], dice[2]
      end
      ptn << dice.join.to_i if save
    end
  end

  def self.ptn_list
    @_ptn_list
  end

  def self.add_list(_list)
    @_ptn_list << _list
  end

  def self.cmp_dice(_dice_a, _dice_b)
    if _dice_a == _dice_b
      puts "No"
      exit
    end
  end

  def self.f_check
    puts @_ptn_list.size == @_ptn_list.uniq.size ? "Yes" : "No"
  end
end

_n = gets(chomp:true).to_i
_dice_a = Dice.new(gets.split.map(&:to_i))

4.times do
  _dice_a.roll("w", 4, true)
  _dice_a.roll("n", 1)
end
_dice_a.roll("e", 1)
_dice_a.roll("n", 1)
_dice_a.roll("w", 4, true)
_dice_a.roll("s", 2)
_dice_a.roll("w", 4, true)
_dice_a.ptn_join
Dice.add_list(_dice_a.ptn)


(_n - 1).times do
  _dice_b = Dice.new(gets.split.map(&:to_i))

  4.times do
    _dice_b.roll("w", 4, true)
    _dice_b.roll("n", 1)
  end

  _dice_b.roll("e", 1)
  _dice_b.roll("n", 1)
  _dice_b.roll("w", 4, true)
  _dice_b.roll("s", 2)
  _dice_b.roll("w", 4, true)
  _dice_b.ptn_join
  Dice.add_list(_dice_b.ptn)

  Dice.cmp_dice(_dice_a.ptn, _dice_b.ptn)

  _dice_a = _dice_b
end

Dice.f_check
