#include <bits/stdc++.h>
using namespace std;
int main() {
  vector<vector<long long> > v;
  long long n, m;
  cin >> n >> m;
  for (long long i = (0); i < (n); ++i) {
    vector<long long> v1;
    for (long long j = (0); j < (m); ++j) {
      long long a;
      cin >> a;
      a--;
      v1.push_back(a);
    }
    v.push_back(v1);
  }
  long long flag1 = 1;
  for (long long i = (0); i < (n); ++i) {
    long long c = 0;
    for (long long j = (0); j < (m); ++j) {
      if (v[i][j] != j) c++;
    }
    if (c == 0 || c == 2) {
    } else {
      flag1 = 0;
    }
  }
  if (flag1 == 1) {
    cout << "YES" << endl;
    return 0;
  }
  for (long long i = (0); i < (m); ++i) {
    for (long long j = (i + 1); j < (m); ++j) {
      long long flag2 = 1;
      for (long long k = (0); k < (n); ++k) {
        long long flag3 = 0;
        for (long long l = (0); l < (m); ++l) {
          if (l == i || l == j) continue;
          long long a1 = v[k][l];
          long long a2 = v[k][i];
          long long a3 = v[k][j];
          long long flag4 = 1;
          for (long long o = (0); o < (m); ++o) {
            if (o == i || o == j || o == l) continue;
            if (v[k][o] != o) flag4 = 0;
          }
          if (flag4 == 1) {
            if (i == a2 && j == a3 && l == a1) flag3 = 1;
            if (i == a1 && j == a2 && l == a3) flag3 = 1;
            if (j == a1 && l == a2 && i == a3) flag3 = 1;
            if (l == a1 && j == a2 && i == a3) flag3 = 1;
          }
        }
        for (long long l = (0); l < (m); ++l) {
          if (l == i || l == j) continue;
          for (long long o = (0); o < (m); ++o) {
            if (o == l || o == i || o == j) continue;
            long long flag5 = 1;
            for (long long p = (0); p < (m); ++p) {
              if (p == i || p == j || p == l || p == o) continue;
              if (v[k][p] != p) flag5 = 0;
            }
            if (flag5 == 1) {
              long long a1 = v[k][l];
              long long a2 = v[k][i];
              long long a3 = v[k][j];
              long long a4 = v[k][o];
              if (o == a1 && j == a2 && i == a3 && l == a4) flag3 = 1;
            }
          }
        }
        if (flag3 != 1) {
          flag2 = 0;
        }
      }
      if (flag2 == 1) {
        cout << "YES" << endl;
        return 0;
      }
    }
  }
  cout << "NO" << endl;
  return 0;
}
