#include using namespace std; using ll =long long; #define all(v) v.begin(),v.end() #define rep(i,a,b) for(int i=a;i=b;i--) ll INF=2e18; int main() { ios::sync_with_stdio(false); cin.tie(0); ll N,M,X;cin>>N>>M>>X; vector>> vec(N,vector>(0)); vector a(M),b(M); for(ll i=0;i>u>>v; cin>>a[i]>>b[i]; u--;v--; vec[u].push_back(make_pair(v,i)); vec[v].push_back(make_pair(u,i)); } ll s=1; ll g=1000000000; while(s d(N,INF); d[0]=0; priority_queue,vector>,greater>> S; S.push(make_pair(0,0)); while(!S.empty()) { auto p=S.top(); S.pop(); if(d[p.second]p.first+a[x.second]) { d[x.first]=p.first+a[x.second]; S.push(make_pair(d[x.first],x.first)); } } } if(d[N-1]<=X) s=k; else g=k-1; } vector d(N,INF); d[0]=0; priority_queue,vector>,greater>> S; S.push(make_pair(0,0)); while(!S.empty()) { auto p=S.top(); S.pop(); if(d[p.second]p.first+a[x.second]) { d[x.first]=p.first+a[x.second]; S.push(make_pair(d[x.first],x.first)); } } } if(d[N-1]>X) { cout<<-1<