#include #include #include #include #include #include #include using namespace std; using ll = long long; int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n,m,k; cin>>n>>m>>k; vector>> g(n); for(int i = 0;i>u>>v>>c; u--;v--; g[u].push_back(make_pair(v,c)); g[v].push_back(make_pair(u,c)); } int right = 2<<17; int left = -1; while(right-left>1){ int mid = (right+left) / 2; deque que; vector can(n,1e9); vector vis(n,0); can[0] = 0; que.push_back(0); while(que.size()){ auto ni = que.front(); que.pop_front(); if(vis[ni]++) continue; for(auto&itr:g[ni]){ int need = can[ni]; if(itr.second>mid) need++; if(vis[itr.first]) continue; if(need==can[ni]) que.push_front(itr.first); else que.push_back(itr.first); can[itr.first] = min(can[itr.first],need); } } if(can[n-1]