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)] g = [[] for _ in range(n+1)] for a, b, c in abc: g[a].append((b, c)) g[b].append((a, c)) s = [10**18+1]*(n+1) for d, e in de: s[d] = e import heapq q = [(-y, 1)] mx = [0]*(n+1) mx[1] = y ans = 0 while q: ny, nn = heapq.heappop(q) ny *= -1 if ny < mx[nn]: continue ans = max(ans, ny//s[nn]) for b, c in g[nn]: if mx[b] < ny - c: heapq.heappush(q, (c-ny, b)) mx[b] = ny - c print(ans)