#include <bits/stdc++.h>
using namespace std;
vector<int> ans;
queue<int> q;
int a[100100], b[100100];
int ver[200100], head[200100], nxt[200100];
int tot = 0;
void add(int x, int y) {
  tot++;
  ver[tot] = y;
  nxt[tot] = head[x];
  head[x] = tot;
}
int main() {
  int n, m, v1, v2;
  scanf("%d%d", &n, &m);
  for (int i = 0; i < m; i++) {
    scanf("%d%d", &v1, &v2);
    add(v1, v2);
    add(v2, v1);
  }
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  for (int i = 1; i <= n; i++)
    if (a[i] == 0) {
      q.push(i);
      ans.push_back(i);
    }
  while (!q.empty()) {
    int x = q.front();
    q.pop();
    b[x]++;
    for (int i = head[x]; i; i = nxt[i]) {
      int y = ver[i];
      b[x]++;
      b[y]++;
      if (b[y] == a[y]) {
        q.push(y);
        ans.push_back(y);
      }
    }
  }
  printf("%d\n", ans.size());
  if (ans.size()) {
    for (int i = 0; i < ans.size() - 1; i++) printf("%d ", ans[i]);
    printf("%d\n", ans[ans.size() - 1]);
  }
  return 0;
}
