#include <iostream>
#include <algorithm>
const int N(100009),N2(20009);
using namespace std;
struct event{
int a,b,w;
};
event cp[N];
int fa[2*N2]={0};
bool comp(const event &x,const event &y)
{
return x.w>y.w;
}
int f(int x)
{
while(fa[x]!=x)
x=fa[x];
return x;
}
int main()
{
int n,m,t1(0),t2(0);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&cp[i].a,&cp[i].b,&cp[i].w);
for(int i=1;i<=n;i++) fa[i]=i;
sort(cp+1,cp+m+1,comp);
for(int i=1;i<=m;i++)
{
int a=cp[i].a,b=cp[i].b;
int x1=f(a),y1=f(b);
if(x1==y1)
{
cout<<cp[i].w<<endl;
return 0;
}
int x2=fa[a+n],y2=fa[b+n];
if(x2)
fa[f(x2)]=y1;
else fa[a+n]=y1;
if(y2)
fa[f(y2)]=x1;
else fa[b+n]=x1;
}
cout<<0<<endl;
return 0;
}
/**************************************************************
Problem: 2298
User: admin
Language: C++
Result: Accepted
Time:176 ms
Memory:3404 kb
****************************************************************/