#include using namespace std; #define rep(i, n) for (int i = 0; i < (int)(n); i++) typedef vector VI; typedef vector VVI; typedef vector VL; typedef vector VVL; typedef long long LL; #define all(a) (a).begin(), (a).end() #define Yes(n) cout << ((n) ? "Yes" : "No" ) << endl #define ALL(a) (a).begin(),(a).end() #define pb push_back int main() { LL n,m,p,y; cin>>n>>m>>p>>y; VVI A[n]; rep(i,m){ int a,b,c; cin>>a>>b>>c; a--;b--; A[a].pb({b,c}); A[b].pb({a,c}); } LL dist[n]; rep(i,n){dist[i]=-1;} set D; D.insert({-y,0}); while(D.size()>0){ VL z=*D.begin(); D.erase(z); if(dist[z[1]]!=-1){continue;} int i=z[1]; dist[i]=-z[0]; for(VI zz : A[i]){ int j=zz[0]; if(dist[j]==-1){ D.insert({-max(dist[i]-zz[1],LL(0)),j}); } } } LL ans=0; rep(i,p){ int d,e;cin>>d>>e;d--; ans=max(ans,dist[d]/e); }cout<