import sys input = lambda :sys.stdin.readline()[:-1] ni = lambda :int(input()) na = lambda :list(map(int,input().split())) yes = lambda :print("yes");Yes = lambda :print("Yes");YES = lambda : print("YES") no = lambda :print("no");No = lambda :print("No");NO = lambda : print("NO") ####################################################################### n, k, m, p = na() g = [[]for i in range(n)] inf = 10**18 for _ in range(m): u,v = na() u-=1 v-=1 g[u].append(v) g[v].append(u) s = [ni() for i in range(n)] x = [ni()-1 for i in range(k)] from heapq import * hq = [] f = [0] * n d = [inf] * n for i in range(k): hq.append((s[x[i]], x[i])) d[x[i]] = 0 ans = 0 while hq: #print(hq,f,d) t, v = heappop(hq) if f[v]:continue for u in g[v]: #print(u, f) if d[u] == inf: d[u] = t heappush(hq, (t + s[u], u)) elif f[u] ^ 1 and t - d[u] < p: #print(u, d) f[u] = 1 ans += 1 else: f[u] = 1 print(ans)