#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e5 + 10;
vector<int> G[maxn];
vector<int> in[maxn];
int n, m;
int t[maxn];
int main() {
  scanf("%d%d", &n, &m);
  for (int i = 1; i <= m; i++) {
    int u, v;
    cin >> u >> v;
    G[u].push_back(v);
    G[v].push_back(u);
  }
  for (int i = 1; i <= n; i++) {
    cin >> t[i];
  }
  for (int i = 1; i <= n; i++) {
    set<int> se;
    se.clear();
    for (int j = 0; j < G[i].size(); j++) {
      int x = G[i][j];
      if (t[x] == t[i]) {
        printf("-1\n");
        return 0;
      }
      if (t[x] < t[i]) {
        se.insert(t[x]);
      }
    }
    if (se.size() != t[i] - 1) {
      printf("-1\n");
      return 0;
    }
  }
  vector<pair<int, int> > res;
  res.clear();
  for (int i = 1; i <= n; i++) {
    res.push_back(make_pair(t[i], i));
  }
  sort(res.begin(), res.end());
  for (int i = 0; i < res.size(); i++) {
    printf("%d ", res[i].second);
  }
  return 0;
}
