#include <bits/stdc++.h>
const int MAXN = 234;
const int INF = 0x3f3f3f3f;
struct Edge {
  int cap;
  int flow;
} edge[MAXN][MAXN];
struct Max_Flow {
  int pri[MAXN];
  int src;
  int tar;
  int n;
  bool bfs() {
    std::queue<int> q;
    memset(pri, 0, sizeof(pri));
    pri[src] = 1;
    q.push(src);
    for (; !q.empty();) {
      int u = q.front();
      q.pop();
      for (int v = 0; v < n; v++) {
        if (!pri[v] && edge[u][v].cap - edge[u][v].flow) {
          pri[v] = pri[u] + 1;
          if (v == tar) return true;
          q.push(v);
        }
      }
    }
    return false;
  }
  int dfs(int u, int flow) {
    if (u == tar) return flow;
    int f = flow;
    for (int v = 0; v < n; v++) {
      if (pri[v] == pri[u] + 1 && edge[u][v].cap - edge[u][v].flow) {
        int add = edge[u][v].cap - edge[u][v].flow;
        int min_add = dfs(v, std::min(add, flow));
        edge[u][v].flow += min_add;
        edge[v][u].flow -= min_add;
        flow -= min_add;
      }
    }
    return f - flow;
  }
  int max_flow() {
    int sum = 0;
    for (; bfs(); sum += dfs(src, INF))
      ;
    return sum;
  }
} MF;
int a[MAXN];
int b[MAXN];
int main() {
  int n, m;
  scanf("%d %d", &n, &m);
  for (int i = 1; i <= n; i++) scanf("%d", a + i);
  for (int i = 1; i <= n; i++) scanf("%d", b + i);
  int sum[2];
  sum[0] = sum[1] = 0;
  for (int i = 1; i <= n; i++) {
    edge[0][2 * i].cap = a[i];
    edge[2 * i][2 * i - 1].cap = a[i];
    edge[2 * i - 1][2 * n + 1].cap = b[i];
    sum[0] += a[i];
    sum[1] += b[i];
  }
  if (sum[0] != sum[1]) {
    puts("NO");
    return 0;
  }
  for (int i = 0; i < m; i++) {
    int u, v;
    scanf("%d %d", &u, &v);
    edge[2 * u][2 * v - 1].cap = a[u];
    edge[2 * v][2 * u - 1].cap = a[v];
  }
  MF.src = 0;
  MF.tar = 2 * n + 1;
  MF.n = 2 * n + 2;
  int max_flow = MF.max_flow();
  if (max_flow == sum[0]) {
    puts("YES");
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) {
        printf("%d ", edge[2 * i][2 * j - 1].flow);
      }
      printf("\n");
    }
  } else
    puts("NO");
  return 0;
}
