#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[205], b[205], g[205][205];
int ver, edg;
struct Edmond_Karp {
  bool bfs(int rg[][205], int s, int t, int parent[]) {
    queue<int> q;
    q.push(s);
    bool visited[205];
    memset(visited, 0, sizeof(visited));
    visited[s] = 1;
    parent[s] = -1;
    while (!q.empty()) {
      int top = q.front();
      q.pop();
      for (int i = 1; i <= ver; i++) {
        if (rg[top][i] != 0 && visited[i] == 0) {
          visited[i] = 1;
          parent[i] = top;
          q.push(i);
        }
      }
    }
    if (visited[t] == 1) {
      return 1;
    } else {
      return 0;
    }
  }
  int EdmondKarp(int g[][205], int s, int t, int sum) {
    int rg[205][205], i, j;
    for (i = 1; i <= ver; i++) {
      for (j = 1; j <= ver; j++) {
        rg[i][j] = g[i][j];
      }
    }
    int parent[205];
    int max_flow = 0;
    while (bfs(rg, s, t, parent)) {
      int path_flow = INT_MAX;
      for (i = t; i != s; i = parent[i]) {
        j = parent[i];
        path_flow = min(path_flow, rg[j][i]);
      }
      for (i = t; i != s; i = parent[i]) {
        j = parent[i];
        rg[j][i] -= path_flow;
        rg[i][j] += path_flow;
      }
      max_flow += path_flow;
    }
    if (max_flow == sum) {
      cout << "YES\n";
      for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
          cout << rg[n + j][i] << " ";
        }
        cout << '\n';
      }
    } else {
      cout << "NO\n";
    }
    return max_flow;
  }
} EK;
void make_graph() {
  cin >> n >> m;
  int u, v, sum = 0, sum1 = 0;
  for (int i = 1; i <= n; i++) {
    cin >> g[2 * n + 1][i];
    sum1 += g[2 * n + 1][i];
    g[i][n + i] = g[2 * n + 1][i];
  }
  for (int j = 1; j <= n; j++) {
    cin >> g[j + n][2 * n + 2];
    sum += g[j + n][2 * n + 2];
  }
  for (int i = 1; i <= m; i++) {
    cin >> u >> v;
    g[u][n + v] = 1 << 30;
    g[v][n + u] = 1 << 30;
  }
  ver = 2 * n + 2;
  if (sum != sum1) {
    cout << "NO\n";
    return;
  }
  EK.EdmondKarp(g, 2 * n + 1, 2 * n + 2, sum);
  return;
}
int main() {
  make_graph();
  return 0;
}
