#include <bits/stdc++.h>
using namespace std;
int aa[1000][1000], bb[1000][1000], cc[1000], dd[1000];
int n, m;
void init() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      scanf("%d", &aa[i][j]);
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) {
      scanf("%d", &bb[i][j]);
    }
  }
}
int solve() {
  int cnt;
  for (int i = 1; i <= n + m - 1; i++) {
    cnt = 0;
    for (int j = 1; j <= n; j++) {
      if (i + 1 - j >= 1 && i + 1 - j <= m) {
        cc[++cnt] = aa[j][i + 1 - j];
        dd[cnt] = bb[j][i + 1 - j];
      }
    }
    sort(cc + 1, cc + cnt + 1);
    sort(dd + 1, dd + cnt + 1);
    bool flag = true;
    for (int j = 1; j <= cnt; j++) {
      if (cc[j] != dd[j]) flag = false;
    }
    if (!flag) {
      printf("NO");
      return (0);
    }
  }
  return (1);
}
int flmax(int a, int b) {
  if (a < b)
    return (b);
  else
    return (a);
}
int flmin(int a, int b) {
  if (a < b)
    return (a);
  else
    return (b);
}
int main() {
  init();
  int t = solve();
  if (t) printf("YES");
  int ffffa = 1;
  int ffffb = 2;
  int ffffma = flmax(ffffa, ffffb);
  int ffffmi = flmin(ffffa, ffffb);
  return 0;
}
