#include #include #include #include using namespace std; int N,M,L,S,E; vector >G[2<<17]; vectorf(int s) { vectorret(N,(long)1e18); ret[s]=0; priority_queue >Q; Q.push(make_pair(0,s)); while(!Q.empty()) { int u=Q.top().second; long d=-Q.top().first; Q.pop(); if(ret[u]nd) { ret[v]=nd; Q.push(make_pair(-nd,v)); } } } return ret; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin>>N>>M>>L>>S>>E; for(int i=0;i>a>>b>>c; a--,b--; G[a].push_back(make_pair(b,c)); G[b].push_back(make_pair(a,c)); } vectors=f(0),T=f(N-1); long ans=1e18; for(int i=0;i>t;t--; long v=max(s[t],(long)S); if(v=(long)1e18)ans=-1; cout<