from heapq import * N, M, P, Y = map(int, input().split()) ABC = [list(map(int, input().split())) for _ in range(M)] DE = [list(map(int, input().split())) for _ in range(P)] E = [[] for _ in range(N)] for a, b, c in ABC: a -= 1 b -= 1 E[a].append((b, c)) E[b].append((a, c)) INF = 10 ** 16 D = [INF] * N # 普通のダイクストラ def dijkstra(): D[0] = 0 q = [(0, 0)] while q: d, u = heappop(q) # 下のifでTLE解消することがある if d > D[u]: continue for i in E[u]: a, b = i if D[a] > D[u] + b: D[a] = D[u] + b heappush(q, (D[a], a)) return dijkstra() ans = 0 for d, e in DE: d -= 1 ans = max(ans, (Y - D[d]) // e) print(ans)