#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;
}