import heapq N,M,P,Y=(int(x) for x in input().split()) d={} for i in range(1,N+1): d[i] = [] for i in range(M): A,B,C=(int(x) for x in input().split()) d[A].append([B,C]) d[B].append([A,C]) shop={} for i in range(P): D,E=(int(x) for x in input().split()) shop[D] = E inf=float("inf") money_lose=[inf]*N money_lose[0]=0 L=[[1,0]] heapq.heapify(L) while L: a=heapq.heappop(L) u=a[0] c=a[1] if c > money_lose[u-1]: continue for v, cost in d[u]: if money_lose[v-1] > c + cost: money_lose[v-1] = c + cost heapq.heappush(L,[v, c+cost]) ans=0 for i in range(N): if i+1 in shop: ans = max(ans, (Y-money_lose[i])//shop[i+1]) print(ans)