#include <stdio.h>
#include<stdlib.h>
int main()
{
int n, m;
scanf("%d %d", &n, &m);
int** arr1 = (int**)malloc(n * sizeof(int*));
for (int a = 0; a < n; a++)
{
arr1[a] = (int*)malloc(m * sizeof(int));
}
int** arr2 = (int**)malloc(n * sizeof(int*));
for (int a = 0; a < n; a++)
{
arr2[a] = (int*)malloc(m * sizeof(int));
}
for (int b = 0; b < n; b++)
{
for (int c = 0; c < m; c++)
{
scanf("%d", &arr1[b][c]);
}
}
for (int b = 0; b < n; b++)
{
for (int c = 0; c < m; c++)
{
scanf("%d", &arr2[b][c]);
}
}
int count = 0;
for (int f = 0; f < n; f++)
{
for (int g = 0; g < m; g++)
{
if (arr1[f][g] == arr2[f][g])count++;
}
}
if(count==m*n)printf("Yes\n");
else
printf("No\n");
for (int h = 0; h < n; h++)
{
free(arr1[h]);
free(arr2[h]);
}
free(arr1);
free(arr2);
return 0;
}