#include #define rep(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 Graph = vector>; int main(void){ int n,m,s,g; cin >> n >> m >> s >> g; s--; g--; vector> G(n); rep(i,0,m){ int f,t; cin >> f >> t; f--; t--; G[f].push_back(t); G[t].push_back(f); } stack S; vector seen(n,0); int w; cin >> w; rep(i,0,w){ int a; cin >> a; a--; seen[a] = 1; } S.push(s); seen[s] = 1; while(S.size()){ int state = S.top(); S.pop(); for(int s2 : G[state]){ if(seen[s2]) continue; S.push(s2); seen[s2] = 1; } } cout << (seen[g] ? "Yes" : "No"); }