#include using namespace std; #define int long long int N,M,P,Y; signed main(){ cin>>N>>M>>P>>Y; vector>> G(N+1); for(int i = 0; i < M; i++){ int a,b,c; cin>>a>>b>>c; G[a].push_back(make_pair(b,c)); G[b].push_back(make_pair(a,c)); } vector hati(N+1,-100); for(int i = 0; i < P; i++){ int d,e; cin>>d>>e; hati[d] = e; } priority_queue> Q; Q.push(make_pair(Y,1)); vector visited(N+1); vector zan(N+1); while(!Q.empty()){ int pos = Q.top().second; int cost = Q.top().first; Q.pop(); if(visited[pos]) continue; visited[pos] = true; zan[pos] = cost; for(pair i:G[pos]){ int next = i.first; int katu = i.second; if(!visited[next]){ if(cost - katu < 0) continue; Q.push(make_pair(cost - katu,next)); } } } int ans = 0; for(int i = 1; i <= N; i++){ ans = max(ans,zan[i]/hati[i]); } cout << ans << endl; }