#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int a[100010], b[100010], in[100010]; vector> vec; vector> v(100010); vector ans; bool bo[100010] = { false }; int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { cin >> a[i]; vec.emplace_back(make_pair(a[i], i)); } sort(vec.begin(), vec.end()); for (int i = 1; i <= n; i++) { in[i] = vec[i - 1].second; } for (int i = 0; i < m; i++) { int c, d; cin >> c >> d; v[c].emplace_back(d); v[d].emplace_back(c); } int k; cin >> k; for (int i = 0; i < k; i++) { int b1; cin >> b1; bo[b1] = true; } for (int i = 1; i <= n; i++) { if (bo[in[i]]) { bo[in[i]] = false; for (int j = 0; j < v[in[i]].size(); j++) { if (a[in[i]] < a[v[in[i]][j]]) { bo[v[in[i]][j]] = !bo[v[in[i]][j]]; } } ans.emplace_back(in[i]); } } cout << ans.size() << endl; for (int i = 0; i < ans.size(); i++) { cout << ans[i] << endl; } }