#include #include using namespace std; using namespace atcoder; using ll = long long; using ld = long double; using mint = modint998244353; int main() { int n, m; cin >> n >> m; int s, g; cin >> s >> g; s--, g--; vector> ft(m); for (int i = 0; i < m; i++) { cin >> ft[i].first >> ft[i].second; ft[i].first--, ft[i].second--; } int u; cin >> u; set st; for (int i = 0; i < u; i++) { int k; cin >> k; k--; st.insert(k); } dsu uf(n); for (int i = 0; i < m; i++) { if (st.count(ft[i].first) or st.count(ft[i].second)) continue; uf.merge(ft[i].first, ft[i].second); } cout << (uf.same(s, g) ? "Yes": "No") << endl; return 0; }