#include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; struct edge { int u,v,w; }e[maxn*2]; int pre[maxn],n,m,u,v,w,o,sum; bool cmp(edge a,edge b){return a.w<b.w;} int f(int x){return pre[x]==x?x:pre[x]=f(pre[x]);} void kruskal() { int tot=0;sum=0; for(int i=1;i<=m&&tot<n;i++){ int r=f(e[i].u) , t=f(e[i].v); if(r!=t){ sum=e[i].w;tot++;pre[r]=t; // 此處改爲sun+=..就是最小生成樹代碼 } int a = f(1),b = f(n); if(a==b) return; } } int main() { int a,b,c; cin>>n>>m; for(int i=1;i<=n;i++)pre[i]=i; for(int i=1;i<=m;i++) scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); sort(e+1,e+1+m,cmp); kruskal(); printf("%d\n",sum); return 0; }