from heapq import heapify, heappush, heappop N, M, P, Y = map(int, input().split()) graph = [{} for _ in range(N)] for _ in range(M): a, b, c = map(int, input().split()) a -= 1 b -= 1 graph[a][b] = c graph[b][a] = c headband = [None for _ in range(N)] for _ in range(P): d, e = map(int, input().split()) d -= 1 headband[d] = e cost = [float('inf') for _ in range(N)] cost[0] = 0 Q = [(0, 0)] heapify(Q) maximum = 0 while Q: c, v = heappop(Q) if c > cost[v]: continue if headband[v]: maximum = max(maximum, max(Y - cost[v], 0) // headband[v]) for u in graph[v]: d = c + graph[v][u] if d < cost[u]: cost[u] = d heappush(Q, (d, u)) print(maximum)