#include <bits/stdc++.h>
using namespace std;
int m1[500][500], m2[500][500];
bool check(int i, int j, int n) {
  vector<int> a, b;
  while (i < n && j >= 0) {
    a.push_back(m1[i][j]);
    b.push_back(m2[i][j]);
    j--;
    i++;
  }
  sort(a.begin(), a.end());
  sort(b.begin(), b.end());
  if (a == b)
    return true;
  else
    return false;
}
int main() {
  int n, m;
  bool flag = 1;
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cin >> m1[i][j];
  }
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cin >> m2[i][j];
  }
  for (int i = 0; i < m && flag; i++) {
    flag = check(0, i, n);
  }
  for (int i = 1; i < n && flag; i++) {
    flag = check(i, m - 1, n);
  }
  if (flag)
    cout << "YES";
  else
    cout << "NO";
  return 0;
}
