from collections import defaultdict,deque import heapq N,M,P,Y = list(map(int,input().split())) edge = defaultdict(list) for _ in range(M): a,b,c = list(map(int,input().split())) a -= 1;b -= 1 edge[a].append((c,b)) edge[b].append((c,a)) shop = [] for _ in range(P): d,e = list(map(int,input().split())) shop.append((d-1,e)) q = [(Y,0)] money_s = [float("-inf") for _ in range(N)] while(q): money,now = heapq.heappop(q) if(money_s[now] >= money):continue money_s[now] = money for c,a in edge[now]: if(money_s[a] >= money - c):continue heapq.heappush(q,(money-c,a)) ans = float("-inf") for i in range(P): d,e = shop[i] ans = max(ans,money_s[d]//e) print(ans)