#include <stdio.h>
int main() {
int n,m;
scanf("%d %d",&n,&m);
int a[10][10]={0};//定义第一个数组,把数据输入
int i,j;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%d",&a[i][j]);
}
}
int arr[10][10]={0};//定义第二个数组,把数据输入
for(i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%d",&arr[i][j]);
}
}
int judge=1;
int exit=0;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
if(a[i][j]!=arr[i][j]){//当两数组存在一项不相等的时候,跳出循环
judge=0;
break;
exit=1;//exit 的作用是为了跳出外层循环,也就是当内层循环跳出时,外层循环也要跳出
}
}
if(exit)break;//与上文对应
}
if(judge==1){
printf("Yes\n");
}else {
printf("No\n");
}
return 0;
}