#include <bits/stdc++.h>
using namespace std;
long long quickpow(long long a, long long b, long long MOD) {
  long long ans = 1;
  a %= MOD;
  while (b) {
    if (b & 1ll) ans = ans * a % MOD;
    a = a * a % MOD, b >>= 1;
  }
  return ans;
}
long long gcd(long long a, long long b) {
  return a % b == 0 ? b : gcd(b, a % b);
}
int mat[105][105], a[105], b[105];
int main() {
  int n, m;
  while (cin >> n >> m) {
    int rowxor = 0, colxor = 0;
    for (int i = 0; i < n; i++) {
      cin >> a[i];
      rowxor ^= a[i];
    }
    for (int i = 0; i < m; i++) {
      cin >> b[i];
      colxor ^= b[i];
    }
    if (rowxor != colxor)
      cout << "NO" << endl;
    else {
      cout << "YES" << endl;
      memset((mat), (0), (sizeof(mat)));
      rowxor = 0;
      for (int i = 0; i < n - 1; i++) {
        mat[i][m - 1] = a[i];
        rowxor ^= a[i];
      }
      for (int i = 0; i < m - 1; i++) mat[n - 1][i] = b[i];
      mat[n - 1][m - 1] = rowxor ^ b[m - 1];
      for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
          if (j) cout << " ";
          cout << mat[i][j];
        }
        cout << endl;
      }
    }
  }
  return 0;
}
