func_code_string: #include <bits/stdc++.h>   using namespace std;   long long power(long long a, long long b) {     long long res = 1;     a %= 998244353;     assert(b >= 0);     for (; b; b >>= 1) {       if (b & 1) res = res * a % 998244353 % 998244353;       a = a * a % 998244353;     }     return res;   }   long long gcd(long long a, long long b) {     if (a < b) return gcd(b, a);     if (b == 0) return a;     return gcd(b, a % b);   }   long long n, m;   long long flg = 0;   vector<long long> ad[500005];   long long t[500005];   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     ;     long long i, j, k, x;     cin >> n >> m;     for (i = 0; i < m; i++) {       cin >> j >> k;       ad[j].push_back(k);       ad[k].push_back(j);     }     vector<pair<long long, long long> > ans;     for (i = 1; i <= n; i++) {       cin >> t[i];       ans.push_back(make_pair(t[i], i));     }     sort(ans.begin(), ans.end());     for (i = 1; i <= n; i++) {       set<long long> tp;       for (auto x : ad[i]) {         tp.insert(t[x]);       }       for (j = 1; j < t[i]; j++) {         auto it = tp.find(j);         if (it == tp.end()) {           cout << -1 <<   n ;           return 0;         } else {           tp.erase(j);         }       }       auto it = tp.find(t[i]);       if (it != tp.end()) {         cout << -1 <<   n ;         return 0;       }     }     for (i = 0; i < ans.size(); i++) {       cout << ans[i].second <<    ;     }     cout <<   n ;     return 0;   }   