#pragma GCC optimize("O3") #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using ll = long long; using P = pair; using T = tuple; template inline T chmax(T &a, const T b) {return a = (a < b) ? b : a;} template inline T chmin(T &a, const T b) {return a = (a > b) ? b : a;} constexpr int MOD = 1e9 + 7; constexpr int inf = 1e9; constexpr long long INF = 1e18; #define all(a) (a).begin(), (a).end() int dx[] = {1, 0, -1, 0}; int dy[] = {0, 1, 0, -1}; int main(){ cin.tie(0); ios::sync_with_stdio(false); int n, m; cin>>n>>m; vector a(n); for(int i=0; i>a[i]; vector> G(n); for(int i=0; i>u>>v; u--, v--; G[u].emplace_back(v); G[v].emplace_back(u); } int k; cin>>k; vector

ai; vector light(n, 0); for(int i=0; i>b; b--; light[b] = 1; ai.emplace_back(a[b], b); } sort(all(ai)); vector ans; for(auto cur : ai){ int ca, cv; tie(ca, cv) = cur; if(light[cv] == 0) continue; light[cv] = 0; ans.emplace_back(cv); for(auto nv : G[cv]){ if(ca < a[nv]) light[nv] ^= 1; } } if(accumulate(all(light), 0) != 0){ cout << -1 << endl; } else{ cout << ans.size() << endl; for(auto i : ans) cout << i + 1 << endl; } return 0; }