#include <bits/stdc++.h>
using namespace std;
int m, n, ans, e[100005], fa[100005];
struct node{
int x, y, t;
}a[100005];
int find(int x){
return x == fa[x] ? x : fa[x] = find(fa[x]);
}
bool cmp(node xx, node yy){
return xx.t > yy.t;
}
int main(){
scanf("%d%d", &m, &n);
for(int i = 1; i <= n; i++)
scanf("%d%d%d", &a[i].x, &a[i].y, &a[i].t);
for(int i = 1; i <= m; i++)
fa[i] = i;
sort(a + 1, a + n + 1, cmp);
for(int i = 1; i <= n; i++){
if(find(a[i].x) == find(a[i].y)){
printf("%d", a[i].t);
return 0;
}
if(!e[a[i].x]) e[a[i].x] = a[i].y;
else fa[find(e[a[i].x])] = find(a[i].y);
if(!e[a[i].y]) e[a[i].y] = a[i].y;
else fa[find(e[a[i].y])] = find(a[i].x);
}
printf("0");
return 0;
}