#include #define rep(i,n) for(int i = 0; i < n; i++) #define srep(i,a,b) for(int i = a; i < b; i++) #define all(A) (A).begin(),A.end() #define MOD 1000000007 using namespace std; using ll = long long; using P = pair; using Graph = vector>; int main(void){ int n,m; cin >> n >> m; int s,g; cin >> s >> g; s--; g--; Graph G(n); vector seen(n,0); rep(i,m){ int f,t; cin >> f >> t; f--; t--; G[f].push_back(t); G[t].push_back(f); } int w; cin >> w; rep(i,w){ int c; cin >> c; c--; seen[c] = 1; } queue Q; Q.push(s); seen[s] = 1; while(Q.size()){ auto state = Q.front(); Q.pop(); for(auto &ss : G[state]){ if(seen[ss]) continue; seen[ss] = 1; Q.push(ss); } } cout << (seen[g] ? "Yes" : "No"); }