#include <bits/stdc++.h>
using namespace std;
inline int read(){
int x=0;bool f=1;char c=getchar();
while(c>'9'||c<'0'){if(c=='-')f=0;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+c-'0';c=getchar();}
return f?x:-x;
}
struct ed{
int u,v,w;
bool operator<(ed x) const{
return x.w<w;
}
}a[100005];
int n,m,f[40005];
int find(int x){
return (f[x]^x)?f[x]=find(f[x]):x;
}
int main(){
n=read(),m=read();
for(int i=1;i<=n;i++)
f[i]=i;
for(int i=1;i<=m;i++)
a[i].u=read(),a[i].v=read(),a[i].w=read();
sort(a+1,a+m+1);
for(int i=1;i<=m;i++)
if(find(a[i].u)==find(a[i].v)) return !printf("%d\n",a[i].w);
else f[find(a[i].u)]=find(a[i].v+n),f[find(a[i].v)]=find(a[i].u+n);
puts("0");
return 0;
}