from heapq import* N,M,P,Y=map(int,input().split()) gr=[[] for i in range(N)] for i in range(M): A,B,C=map(int,input().split()) gr[A-1].append((B-1,C)) gr[B-1].append((A-1,C)) dist=[1<<60]*N dist[0]=0 hq=[(0,0)] while hq: dis,pos=heappop(hq) if dist[pos]!=dis: continue for t,c in gr[pos]: if dist[t]>dis+c: dist[t]=dis+c heappush(hq,(dist[t],t)) ans=0 for i in range(P): D,E=map(int,input().split()) D-=1 now=max(0,Y-dist[D]) ans=max(ans,now//E) print(ans)