#include <bits/stdc++.h>
using namespace std;
int N;
int M;
int arr[(int)5e5 + 5];
int ord[(int)5e5 + 5];
int vst[(int)5e5 + 5];
vector<int> con[(int)5e5 + 5];
bool cmp(int x, int y) { return arr[x] < arr[y]; }
bool dfs(int pos) {
  vst[pos] = true;
  set<int> cur;
  for (int adj : con[pos]) {
    if (arr[adj] == arr[pos]) return false;
    if (arr[adj] <= arr[pos]) cur.insert(arr[adj]);
    if (!vst[adj])
      if (!dfs(adj)) return false;
  }
  return cur.size() == arr[pos] - 1;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> N >> M;
  for (int i = 0; i < M; i++) {
    int src;
    int dst;
    cin >> src >> dst;
    con[src].push_back(dst);
    con[dst].push_back(src);
  }
  for (int i = 1; i <= N; i++) cin >> arr[i];
  for (int i = 1; i <= N; i++) {
    if (!vst[i] && !dfs(i)) {
      cout << "-1\n";
      return 0;
    }
  }
  for (int i = 1; i <= N; i++) ord[i] = i;
  sort(ord + 1, ord + 1 + N, cmp);
  for (int i = 1; i <= N; i++) cout << ord[i] << " ";
  return 0;
}
