#include<bits/stdc++.h>
using namespace std;
struct edge{
int u,v,w;
bool operator<(const edge& a)const{
return w<a.w;
}
};
edge g[10010];
int head[10010],tot=0,ans,m,n,u,v,w;
struct dsu{
int fa[10010];
int siz[10010];
int n;
void init(){
for(int i=1;i<=n;i++) fa[i]=i,siz[i]=1;
}
int find(int p)
{
if(p==fa[p]) return p;
return fa[p]=find(fa[p]);
}
void merge(int x,int y)
{
x=find(x),y=find(y);
if(x==y) return;
if(siz[x]>siz[y]) swap(x,y);
fa[x]=y;
siz[y]+=siz[x];
}
};
void add(int u,int v,int w)
{
g[++tot].u=u;
g[tot].v=v;
g[tot].w=w;
head[u]=tot;
}
void kruskal()
{
sort(g+1,g+m+1);
dsu.n=n;
dsu.init();
for(int i=0;i<=m;i++)
{
int u=g[i].u,v=g[i].v;
u=dsu.find(u),v=dsu.find(v);
if(u!=v)
{
dsu.merge(u,v);
ans=g[i].w;
}
}
}
int main()
{
cin>>m>>n;
for(int i=1;i<=n;i++){
cin>>u>>v>>w;
add(u,v,w);
}
kruskal();
cout<<ans;
return 0;
}