#include <bits/stdc++.h>
using namespace std;
int n,m,cnt;
int fa[40005];
struct A
{
int x,y,c;
}zf[100005];
int find(int x)
{
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
void ad(int e,int f)
{
e=find(fa[e]);
f=find(fa[f]);
fa[e]=f;
}
bool cmp(A a,A b)
{
return a.c>b.c;
}
bool check(int x,int y)
{
x=find(x);
y=find(y);
if(x==y) return true;
return false;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
fa[i]=i;
fa[i+n]=i+n;
}
for(int i=1;i<=m;i++){
cin>>zf[i].x>>zf[i].y>>zf[i].c;
}
sort(zf+1,zf+m+1,cmp);
for(int i=1;i<=m;i++){
if(check(zf[i].x,zf[i].y)) {
cout<<zf[i].c;
break;
}
else
{
if(!fa[zf[i].x+n]){
fa[zf[i].x+n]=zf[i].y;
}
else {ad(fa[zf[i].x+n],zf[i].y);}
if(!fa[zf[i].y]+n)
fa[zf[i].y+n]=zf[i].x;
else {
ad(fa[zf[i].y+n],zf[i].x);
}
}
}
return 0;
}