#include <bits/stdc++.h>
using namespace std;
int m1[502][502], m2[502][502];
int num[502], lie[502];
vector<int> v;
const int INF = 0x3f3f3f3f;
int main(void) {
  int a, b, i, j, flag = 1, sum = 0;
  scanf("%d %d", &a, &b);
  for (i = 0; i < a; i++) {
    for (j = 0; j < b; j++) {
      scanf("%d", &m1[i][j]);
    }
  }
  for (i = 0; i < a; i++) {
    for (j = 0; j < b; j++) {
      scanf("%d", &m2[i][j]);
    }
  }
  for (i = 0; i < b; i++) {
    num[i] = lie[i] = 0;
  }
  for (i = 0; i < a; i++) {
    for (j = 0; j < b; j++) {
      num[j] += m1[i][j] ^ m2[i][j];
      lie[i] += m1[i][j] ^ m2[i][j];
    }
  }
  for (i = 0; i < b; i++) {
    if (num[i] % 2) {
      flag = 0;
      break;
    }
  }
  for (i = 0; i < a; i++) {
    if (lie[i] % 2) {
      flag = 0;
      break;
    }
  }
  if (flag) {
    printf("Yes\n");
  } else {
    printf("No\n");
  }
  return 0;
}
