from heapq import* n,m,p,y=map(int,input().split()) g=[[] for _ in range(n)] for _ in range(m): a,b,c=map(int,input().split()) a-=1 b-=1 g[b].append((a,c)) g[a].append((b,c)) q=[] inf=1<<60 cost=[inf for _ in range(n)] cost[0]=0 heappush(q,(0,0)) while q: c,now=heappop(q) if c>cost[now]: continue for nxt,v in g[now]: if cost[nxt]>cost[now]+v: cost[nxt]=cost[now]+v heappush(q,(cost[nxt],nxt)) ans=0 for i in range(p): d,e=map(int,input().split()) d-=1 ans=max((y-cost[d])//e,ans) print(ans)