#include using namespace std; int main(void) { int n,k,m,p; cin >> n >> k >> m >> p; vector u(m); vector v(m); vector> g(n); for(int i=0;i> u[i] >> v[i]; --u[i]; --v[i]; g[u[i]].emplace_back(v[i]); g[v[i]].emplace_back(u[i]); } vector s(n); for(int i=0;i> s[i]; } vector x(k); vector day(n,INT_MAX); vector notin(n); int ans=0; priority_queue,vector>,greater>> q; for(int i=0;i> x[i]; --x[i]; day[x[i]]=0; q.emplace(s[x[i]],x[i]); } while(!q.empty()){ auto [d,h]=q.top(); q.pop(); if(notin[h]){ continue; } for(auto next: g[h]){ if(day[next]d){ notin[next]=true; ++ans; } } else { day[next]=d; q.emplace(d+s[next],next); } } } cout << ans << endl; return 0; }