#include <bits/stdc++.h>
using namespace std;
int a[105];
int b[105];
int mat[105][105];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < m; i++) scanf("%d", &b[i]);
  bool fail = false;
  vector<int> av, bv;
  for (int i = 0; i < 32; i++) {
    int mask = 1 << i;
    for (int j = 0; j < n; j++)
      if (a[j] & mask) av.push_back(j);
    for (int j = 0; j < m; j++)
      if (b[j] & mask) bv.push_back(j);
    if ((av.size() - bv.size()) % 2 != 0) {
      fail = true;
      break;
    }
    while (!av.empty() && !bv.empty()) {
      mat[av.back()][bv.back()] |= mask;
      av.pop_back();
      bv.pop_back();
    }
    while (!av.empty()) {
      mat[av.back()][0] |= mask;
      av.pop_back();
    }
    while (!bv.empty()) {
      mat[0][bv.back()] |= mask;
      bv.pop_back();
    }
  }
  if (fail) {
    puts("NO");
  } else {
    puts("YES");
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) {
        printf("%d%c", mat[i][j], " \n"[j + 1 == m]);
      }
    }
  }
  return 0;
}
