#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
long long fa[100000001];
struct hay
{
int x,y,z;
}a[10001];
inline bool cmp(hay a,hay b)
{
return a.z<b.z;
}
inline int find(int t)
{
if(fa[t]==t) return t;
else return fa[t]=find(fa[t]);
}
inline void me(int r1,int r2)
{
int s1=find(r1);
int s2=find(r2);
fa[s1]=s2;
}
inline void Kruskal()
{
int k=0;
int k1,k2;
int ans=0;
for(int i=1;i<=m;i++)
{
k1=find(a[i].x);
k2=find(a[i].y);
if(k1==k2) continue;
k++;
me(k1,k2);
ans=max(a[i].z,ans);
if(k==n-1) break;
}
cout<<ans;
}
int main()
{
cin>>n>>m;
int i;
for(i=1;i<=n;i++)
{
fa[i]=i;
}
for(i=1;i<=m;i++)
{
cin>>a[i].x>>a[i].y>>a[i].z;
}
sort(a+1,a+m+1,cmp);
Kruskal();
return 0;
}