#include <bits/stdc++.h>
using namespace std;
int n, m;
int mat[22][22];
int cnt[22];
int w[22][22];
bool ok1() {
  int ans;
  for (int i = 1; i <= n; i++) {
    ans = 0;
    for (int j = 1; j <= m; j++) {
      if (mat[j][i] != j) ans++;
    }
    if (ans != 2 && ans != 0) return false;
  }
  return true;
}
bool ok2() {
  for (int i = 1; i <= m; i++)
    for (int j = i + 1; j <= m; j++) {
      swap(mat[i], mat[j]);
      if (ok1()) return true;
      swap(mat[i], mat[j]);
    }
  return false;
}
int main() {
  scanf("%d%d", &n, &m);
  int i, j;
  for (i = 1; i <= n; i++)
    for (j = 1; j <= m; j++) scanf("%d", &mat[j][i]);
  if (ok1())
    printf("YES\n");
  else if (ok2())
    printf("YES\n");
  else
    printf("NO\n");
  return 0;
}
