#include <bits/stdc++.h>
using namespace std;
void solve() {
  long long int n, m, i, j;
  cin >> n >> m;
  long long int a[n][m], b[n][m];
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      cin >> a[i][j];
    }
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < m; j++) {
      cin >> b[i][j];
    }
  }
  long long int f = 1;
  long long int t = n + m - 1;
  long long int x = 0;
  long long int y = 0;
  while (t > 0) {
    i = x;
    j = y;
    vector<long long int> veca, vecb;
    while (i >= 0 && j < m) {
      veca.push_back(a[i][j]);
      vecb.push_back(b[i][j]);
      i--;
      j++;
    }
    sort(veca.begin(), veca.end());
    sort(vecb.begin(), vecb.end());
    if (veca != vecb) {
      f = 0;
      break;
    }
    x++;
    if (x >= n) {
      x = n - 1;
      y++;
    }
    t--;
  }
  if (f)
    cout << "YES\n";
  else
    cout << "NO\n";
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(NULL);
  int t;
  t = 1;
  while (t > 0) {
    t--;
    solve();
  }
}
