#include <bits/stdc++.h>

using namespace std;

void fast_io() {
	ios::sync_with_stdio(false);
	std::cin.tie(nullptr);
}

int main() {
	fast_io();
	int n, m, p;
	long long y;
	cin >> n >> m >> p >> y;
	vector<vector<pair<int, long long>>> g(n);
	for (int i = 0; i < m; i++) {
		int a, b;
		long long c;
		cin >> a >> b >> c;
		a--, b--;
		g[a].push_back({b, c});
		g[b].push_back({a, c});
	}
	vector<long long> dist(n, 9e18);
	{
		using pli = pair<long long, int>;
		priority_queue<pli, vector<pli>, greater<pli>> pq;
		vector<bool> vis(n);
		pq.push({0, 0});
		dist[0] = 0;
		while (!pq.empty()) {
			auto [d, u] = pq.top();
			pq.pop();
			if (vis[u]) {
				continue;
			}
			vis[u] = true;
			for (auto [v, w] : g[u]) {
				if (dist[v] > dist[u] + w) {
					dist[v] = dist[u] + w;
					pq.push({dist[v], v});
				}
			}
		}
	}
	long long ans = 0;
	for (int i = 0; i < p; i++) {
		int d;
		long long e;
		cin >> d >> e;
		d--;
		ans = max(ans, max(0LL, y - dist[d]) / e);
	}
	cout << ans << endl;
}