#define _USE_MATH_DEFINES #include<iostream> #include<vector> #include<algorithm> #include<cmath> #include<string> #include<iomanip> #include<numeric> #include<queue> #include<deque> #include<stack> #include<set> #include<map> #include<random> #include<bitset> #include<cassert> #include<complex> #include<fstream> #include<cstdlib> #include<functional> #include<array> using namespace std; typedef long long ll; const int mod=998244353; const int dx[]={1,0,0,-1},dy[]={0,1,-1,0}; vector<int>G[2000]; bool ng[2000],used[2000]; void dfs(int v){ used[v]=1; for(auto&x:G[v]) if(!used[x]) dfs(x); } int main(){ int n,m,s,g,f[2000],t[2000],u,i; cin>>n>>m>>s>>g; s--,g--; for(int i=0;i<m;i++){ cin>>f[i]>>t[i]; f[i]--,t[i]--; } cin>>u; while(cin>>i) ng[--i]=1; for(int i=0;i<m;i++){ if(!ng[f[i]]&&!ng[t[i]]){ G[f[i]].push_back(t[i]); G[t[i]].push_back(f[i]); } } dfs(s); cout<<(used[g]?"Yes":"No")<<endl; }