#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
vector<int> v[5 * maxn];
int t[5 * maxn];
int comp[5 * maxn];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n = 0, m = 0, x = 0, y = 0;
  cin >> n >> m;
  for (int i = 0; i < m; ++i) {
    cin >> x >> y;
    --x;
    --y;
    v[x].push_back(y);
    v[y].push_back(x);
  }
  vector<int> aux;
  for (int i = 0; i < n; ++i) {
    cin >> t[i];
    comp[i] = 1;
    if (t[i] == comp[i]) aux.push_back(i);
  }
  bool flag = false;
  for (int i = 0; i < (int)aux.size(); ++i) {
    int node = aux[i];
    if (comp[node] != t[node]) flag = true;
    for (auto j : v[node]) {
      if (comp[j] == t[node]) {
        ++comp[j];
        if (comp[j] == t[j]) aux.push_back(j);
      }
    }
  }
  if ((int)aux.size() < n) flag = true;
  if (flag)
    cout << "-1";
  else {
    for (auto i : aux) {
      cout << (i + 1) << " ";
    }
  }
}
