#include<bits/stdc++.h>
using namespace std;
const int mxn=1e6+1;
long long int f[mxn],n,m,e[mxn]={0};
int find_root(int x){
if(f[x]==x) return x;
else return find_root(f[x]);
}
void associate(int x,int y){
f[find_root(x)]=find_root(y);
}
struct node{
int s,e,val;
}w[mxn];
bool cmp(node x,node y){
return x.val>y.val;
}
int main()
{
cin>>n>>m;
for (int i=1;i<=n;i++) f[i]=i;
for (int i=1;i<=m;i++){
cin>>w[i].s>>w[i].e>>w[i].val;
}
sort(w+1,w+1+m,cmp);
for (int i=1;i<=m;i++){
if(find_root(w[i].s)==find_root(w[i].e)){
cout<<w[i].val;
break;
}
else{
if(e[w[i].s]==0) e[w[i].s]=w[i].e;
else associate(e[w[i].s],w[i].e);
if(e[w[i].e]==0) e[w[i].e]=w[i].s;
else associate(e[w[i].e],w[i].s);
}
}
return 0;
}