#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
****************************************************************/