#include <bits/stdc++.h>
using namespace std;
int n, m, i, j, k, l, flag(0), x, y;
int a[25][25];
int ifjst2() {
  for (i = 0; i < n; i++) {
    k = 0;
    for (j = 0; j < m; j++)
      if (a[i][j] != j + 1) k++;
    if (k > 2) return 0;
  }
  return 1;
}
int main() {
  cin >> n >> m;
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) scanf("%d", &a[i][j]);
  }
  if (ifjst2()) flag++;
  for (y = 0; y < m; y++) {
    for (x = y + 1; x < m; x++) {
      for (l = 0; l < n; l++) swap(a[l][y], a[l][x]);
      if (ifjst2()) flag++;
      for (l = 0; l < n; l++) swap(a[l][y], a[l][x]);
    }
  }
  if (flag)
    cout << "YES";
  else
    cout << "NO";
  return 0;
}
