import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO ?????????????????????????????????????????????

		Scanner scan = new Scanner(System.in);		
		
		/*
		 * ?????????????????????????????????????´???????
		 */
		// ????????????????????°???????????????
		int n = scan.nextInt();
		
		// ????????????????????????????????????
		Dice4[] dices = new Dice4[n];
		
		// n?????°?????°?????????
		for (int i = 0; i < n; i++) {
		
			// ?????????????????????
			Dice4 dice = new Dice4();
			for(int i2 = 0; i2 < 6; i2++) {
				dice._values[i2] = scan.nextInt();
			}// i2
			// ????????????????????????????´?
			dices[i] = dice;
		
		}// i
		
		
		
		// ?????????????´????????????°
		boolean result = true;
		// ?????´??????????????????????¢???????????????°
		boolean match = false;

		// 
		for(int i = 0; i < n - 1; i++) {
			for(int j = i + 1; j < n; j++) {
				
				// ?????´?????????????????????????´????????????°???????????????false???
				match = false;
				// ????????????????????????????????´????????????????????????????¢????
				// 6??¢??????????????????
				for(int i2 = 0; i2 < 7; i2++) {
					// ?????¢????¢????
					if (dices[i]._values[Dice4.ValueType.Front.getId()] == dices[j]._values[Dice4.ValueType.Front.getId()]) {
						// ?????¢????????£????????????????????¢??????????????§??±?????????
						for(int i3 = 0; i3 < 4; i3++) {
							if (dices[i]._values[Dice4.ValueType.Top.getId()] == dices[j]._values[Dice4.ValueType.Top.getId()]) {
								// ????????¢????????£????????????
								if ( (dices[i]._values[Dice4.ValueType.Right.getId()] == dices[j]._values[Dice4.ValueType.Right.getId()]) &&
									 (dices[i]._values[Dice4.ValueType.Left.getId()] == dices[j]._values[Dice4.ValueType.Left.getId()]) &&
									 (dices[i]._values[Dice4.ValueType.Back.getId()] == dices[j]._values[Dice4.ValueType.Back.getId()]) &&
									 (dices[i]._values[Dice4.ValueType.Bottom.getId()] == dices[j]._values[Dice4.ValueType.Bottom.getId()]) ) {
									match = true;
									break;
								}
								// 6??¢????????´????????????????????°???????????????
							}
							else dices[j].MoveEast();
						}
					}
					// ?????¢??????????????§????????????
					else {
						dices[j].MoveSouth();
					}
					// ?????£?????????????????????
					if (match == true) break;
					// 4?????????????????±??¨?????????????????????????????¢????????????
					if (i2 == 3) {
						dices[j].MoveEast();
						dices[j].MoveSouth();
					}
				}//i2

				
				// ?????´???????????????
				if(match == true) {
					result = false;
					break;
				}
			}
			if(result == false) break;
			
		}
		

		// ??????
		if (match == true) System.out.println("No");
		else System.out.println("Yes");
	}

	

}


// ??????????????????
class Dice4 {

	public int _values[] = new int[6];
	
	public void Dice(int values[]) {
    	for (int i = 0; i < values.length; i++)
    	this._values[i] = values[i];
	}
    
    public enum ValueType {
        Top(0),
        Front(1),
        Right(2),
        Left(3),
        Back(4),
        Bottom(5);
        private final int id;
        private ValueType (final int id) {
            this.id = id;
        }
        public int getId() {
            return id;
        }
    }
    
    public void MoveWest()
    {
        int tmp = this._values[ValueType.Top.getId()];
        this._values[ValueType.Top.getId()] = this._values[ValueType.Right.getId()];
        this._values[ValueType.Right.getId()] = this._values[ValueType.Bottom.getId()];
        this._values[ValueType.Bottom.getId()] = this._values[ValueType.Left.getId()];
        this._values[ValueType.Left.getId()] = tmp;
    }
    public void MoveEast()
    {
        int tmp = this._values[ValueType.Top.getId()];
        this._values[ValueType.Top.getId()] = this._values[ValueType.Left.getId()];
        this._values[ValueType.Left.getId()] = this._values[ValueType.Bottom.getId()];
        this._values[ValueType.Bottom.getId()] = this._values[ValueType.Right.getId()];
        this._values[ValueType.Right.getId()] = tmp;
    }
    public void MoveNorth()
    {
        int tmp = this._values[ValueType.Top.getId()];
        this._values[ValueType.Top.getId()] = this._values[ValueType.Front.getId()];
        this._values[ValueType.Front.getId()] = this._values[ValueType.Bottom.getId()];
        this._values[ValueType.Bottom.getId()] = this._values[ValueType.Back.getId()];
        this._values[ValueType.Back.getId()] = tmp;
    }
    public void MoveSouth()
    {
        int tmp = this._values[ValueType.Top.getId()];
        this._values[ValueType.Top.getId()] = this._values[ValueType.Back.getId()];
        this._values[ValueType.Back.getId()] = this._values[ValueType.Bottom.getId()];
        this._values[ValueType.Bottom.getId()] = this._values[ValueType.Front.getId()];
        this._values[ValueType.Front.getId()] = tmp;
    }


}

Measured memory_bytes: 29100