#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using namespace atcoder; //* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *// void input() { } void solve() { using pii = pair; int N, M; cin >> N >> M; vector A(N), Ar(N); vector> edges(N); vector B(N); for(int i = 0; i < N; i++) { int a; cin >> a; A[i] = {i, a}; Ar[i] = {a, i}; } sort(Ar.begin(), Ar.end()); for(int i = 0; i < M; i++) { int u, v; cin >> u >> v; u--; v--; edges[u].push_back(v); edges[v].push_back(u); } int K; cin >> K; for(int i = 0; i < K; i++) { int b; cin >> b; b--; B[b] = 1; } vector ans; for(int i = 0; i < N; i++) { int Ai = Ar[i].first; int ni = Ar[i].second; if(B[ni]) { ans.push_back(ni); for(auto e : edges[ni]) { if(Ai < A[e].second) { B[e] ^= 1; } } } } int Z = (int)ans.size(); cout << Z << endl; for(int i = 0; i < Z; i++) { cout << ans[i]+1 << endl; } } //* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *// int main() { std::ifstream in("input.txt"); std::cin.rdbuf(in.rdbuf()); std::cin.tie(0); ios::sync_with_stdio(false); input(); solve(); return 0; }