N,M,P,Y=map(int,input().split()) E=[[] for i in range(N)] for i in range(M): a,b,c=map(int,input().split()) a-=1 b-=1 E[a].append((b,c)) E[b].append((a,c)) LIST=[1<<60]*N for i in range(P): d,e=map(int,input().split()) LIST[d-1]=e from heapq import heappop,heappush DIS=[1<<60]*N DIS[0]=0 Q=[(0,0)] while Q: dis,now=heappop(Q) if DIS[now]!=dis: continue for to,cost in E[now]: if DIS[to]>cost+dis: DIS[to]=cost+dis heappush(Q,(DIS[to],to)) ANS=0 for i in range(N): ANS=max(ANS,(Y-DIS[i])//LIST[i]) print(ANS)