#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
const int N=2*100000+10;
struct node{
int u,v;
int cost;
}E[N];
int n,m;
int father[N];
int find(int x){
return x==father[x]?x:father[x]=find(father[x]);
}
void merge(int x,int y){
int xx=find(x);
int yy=find(y);
if(xx!=yy){
father[xx]=yy;
return ;
}
}
bool cmp(node a,node b){
return a.cost<b.cost;
}
int main() {
cin>>n>>m;
for(int i=0;i<m;i++){
int a,b,c;
cin>>a>>b>>c;
E[i].u=a;E[i].v=b;E[i].cost=c;
}
for(int i=1;i<=n;i++){
father[i]=i;
}
sort(E,E+m,cmp);
int result=0;
for(int i=0;i<m;i++){
int u=E[i].u,v=E[i].v;
result=E[i].cost;
int x=find(u),y=find(v);
if(x!=y){
merge(u,v);
}
if(find(1)==find(n)){
break;
}
}
cout<<result<<endl;
return 0;
}