#include using namespace std; #define rep(i, a, b) for (int i = a; i < (b); ++i) #define rep2(i, a, b) for (int i = a; i < (b); i += 2) #define all(x) begin(x), end(x) #define sz(x) (int)(x).size() #define fo(i, n) rep(i, 0, n) #define F first #define S second #define MP make_pair #define PB push_back typedef long long ll; typedef vector vi; typedef pair pii; typedef vector> vpii; typedef vector> vvi; typedef vector vll; typedef pair pll; typedef vector> vpll; typedef vector> vvll; signed main() { cin.tie(0)->sync_with_stdio(0); int n, m; cin >> n >> m; vector> g(2 * m + 1, vector(2 * n + 1)); fo(ben, 2) { for (int y = 0; y <= 2 * n; y++) { for (int x = 1 - y % 2; x <= 2 * m; x += 2) { int rrr; cin >> rrr; g[x][y] ^= rrr; } } } // rep(x, 0, 2 * m + 1) //{ // rep(y, 0, 2 * n + 1) // { // cerr << int(g[x][y]); // } // // cerr << '\n'; //} auto check = [](bool v) { if (v) { cout << "No\n"; exit(0); } }; rep2(x, 2, 2 * m) { rep2(y, 2, 2 * n) { // cerr << x << ' ' << y << '\n'; check(g[x + 1][y] ^ g[x - 1][y] ^ g[x][y + 1] ^ g[x][y - 1]); } } rep2(x, 2, 2 * m) { // cerr << x << ' ' << 'a' << '\n'; check(g[x + 1][0] ^ g[x - 1][0] ^ g[x][1] ^ g[x + 1][2 * n] ^ g[x - 1][2 * n] ^ g[x][2 * n - 1]); } rep2(y, 2, 2 * n) { // cerr << 'a' << ' ' << y << '\n'; check(g[0][y + 1] ^ g[0][y - 1] ^ g[1][y] ^ g[2 * m][y + 1] ^ g[2 * m][y - 1] ^ g[2 * m - 1][y]); } cerr << 'f' << ' ' << 'f' << '\n'; check(g[1][0] ^ g[0][1] ^ g[2 * m - 1][0] ^ g[2 * m][1] ^ g[0][2 * n - 1] ^ g[1][2 * n] ^ g[2 * m - 1][2 * n] ^ g[2 * m][2 * n - 1]); cout << "Yes\n"; }