#include using namespace std; #define rep(i,n) for(int i = 0; i < n; i++) #define REP(i,s,n) for(int i = s; i < n; i++) #define all(x) (x).begin(),(x).end() using Graph = vector>; int main(){ int N,M; cin >> N >> M; int s,g; cin >> s >> g; s--,g--; Graph G(N); rep(i,M){ int a,b; cin >> a >> b; a--,b--; G[a].push_back(b); G[b].push_back(a); } int U; cin >> U; mapma; rep(i,U){ int tmp; cin >> tmp; tmp--; ma[tmp] = true; } queueq; vectorcan(2000); can[s] = true; q.push(s); while(!q.empty()){ int now = q.front(); q.pop(); for(auto &i : G[now]){ if(can[i] || ma[i])continue; can[i] = true; q.push(i); } } if(can[g])cout << "Yes" << endl; else cout << "No" << endl; return 0; }