#include <bits/stdc++.h>
using namespace std;
const int N = 107;
int r[N], c[N];
int ans[N][N];
int main() {
  ios::sync_with_stdio(0);
  int n, m;
  cin >> n >> m;
  int rowxor = 0, colxor = 0;
  for (int i = 0; i < n; i++) cin >> r[i], rowxor ^= r[i];
  for (int i = 0; i < m; i++) cin >> c[i], colxor ^= c[i];
  if (rowxor != colxor) {
    cout << "NO" << endl;
    return 0;
  }
  for (int i = 0; i < 31; i++) {
    int rc = 0, cc = 0, lastr, lastc;
    for (int j = 0; j < n; j++)
      if (r[j] & (1 << i)) rc++, lastr = j;
    for (int j = 0; j < m; j++)
      if (c[j] & (1 << i)) cc++, lastc = j;
    assert(rc % 2 == cc % 2);
    if (rc == 0 && cc == 0)
      continue;
    else if (rc == 0) {
      for (int j = 0; j < m; j++)
        if (c[j] & (1 << i)) ans[0][j] |= (1 << i);
    } else if (cc == 0) {
      for (int j = 0; j < n; j++)
        if (r[j] & (1 << i)) ans[j][0] |= (1 << i);
    } else if (rc % 2) {
      for (int ii = 0; ii < n; ii++)
        for (int jj = 0; jj < m; jj++)
          if ((r[ii] & (1 << i)) && (c[jj] & (1 << i))) ans[ii][jj] |= (1 << i);
    } else {
      for (int ii = 0; ii < lastr; ii++)
        for (int jj = 0; jj < lastc; jj++)
          if ((r[ii] & (1 << i)) && (c[jj] & (1 << i))) ans[ii][jj] |= (1 << i);
      ans[lastr][lastc] |= (1 << i);
    }
  }
  cout << "YES\n";
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << ans[i][j] << " ";
    cout << "\n";
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) r[i] ^= ans[i][j], c[j] ^= ans[i][j];
  for (int i = 0; i < n; i++) assert(r[i] == 0);
  for (int i = 0; i < m; i++) assert(c[i] == 0);
}
