typedef long long ll; typedef long double ld; #include using namespace std; #define int long long signed main(){ ll n,m,x; std::cin >> n>>m>>x; vector>> edges(n); for (int i = 0; i < m; i++) { ll u,v,a,b; std::cin >> u>>v>>a>>b; u--;v--; edges[u].push_back({v,a,b}); edges[v].push_back({u,a,b}); } ll l = 0; ll r = 1e15; using P = pair; while(r-l>1){ ll m = (r+l)/2; vector dis(n,1e18); dis[0] = 0; priority_queue,greater

> pq; pq.push({0,0}); while(!pq.empty()){ auto [d, p] = pq.top();pq.pop(); if(dis[p]d+a&&b>=m){ dis[v] = d+a; pq.push({dis[v], v}); } } } if(dis[n-1]<=x){ l = m; }else{ r = m; } } if(l==0){ std::cout << -1 << std::endl; }else{ std::cout << l << std::endl; } }