#include <bits/stdc++.h>
using namespace std;
const int BASE = 401;
const int somod = 1e9 + 7;
string s, p;
long long n, m, q, a[107], b[107], ans[107][107], gau[107][107];
int GetBit(int x, int i) { return ((x >> i) & 1); }
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> m;
  for (int i = 1; i <= n; i++) cin >> a[i];
  for (int i = 1; i <= m; i++) cin >> b[i];
  for (int BIT = 30; BIT >= 0; BIT--) {
    fill_n(&gau[0][0], 107 * 107, 0);
    int s1 = 0, s2 = 0, pos1 = 0, pos2 = 0;
    for (int i = 1; i <= n; i++) {
      int x = ((a[i] >> BIT) & 1);
      s1 ^= x;
      if (x) pos1 = i;
    }
    for (int i = 1; i <= m; i++) {
      int x = ((b[i] >> BIT) & 1);
      s2 ^= x;
      if (x) pos2 = i;
    }
    if (s1 != s2) return cout << "NO", 0;
    if (s1 == 1)
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
          if (GetBit(a[i], BIT) & GetBit(b[j], BIT)) {
            gau[i][j] = 1;
          }
        }
      }
    else {
      if (pos1 == 0 && pos2 == 0) continue;
      if (pos1 == 0) {
        for (int i = 1; i <= m; i++) {
          if (((b[i] >> BIT) & 1)) gau[1][i] = 1;
        }
      } else if (pos2 == 0) {
        for (int i = 1; i <= n; i++) {
          if (((a[i] >> BIT) & 1)) gau[i][1] = 1;
        }
      } else {
        for (int i = 1; i <= n; i++) {
          if (i == pos1) continue;
          if (GetBit(a[i], BIT)) gau[i][pos2] = 1;
        }
        for (int i = 1; i <= m; i++) {
          if (i == pos2) continue;
          if (GetBit(b[i], BIT)) gau[pos1][i] = 1;
        }
      }
    }
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= m; j++) {
        ans[i][j] |= ((gau[i][j]) << BIT);
      }
    }
  }
  cout << "YES" << '\n';
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= m; j++) cout << ans[i][j] << ' ';
    cout << '\n';
  }
}
