#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
struct Node {
int a, b, c;
inline friend bool operator < (const Node &a, const Node &b) {
return a.c > b.c;
}
} a[N];
int n, m, f[N];
int find(int x) {
if (f[x] == x)
return x;
return f[x] = find(f[x]);
}
signed main() {
// freopen("awa.in", "r", stdin);
// freopen("awa.out", "w", stdout);
cin >> n >> m;
for (int i = 1; i <= m; ++i)
cin >> a[i].a >> a[i].b >> a[i].c;
for (int i = 1; i <= n * 2; ++i)
f[i] = i;
sort(a + 1, a + m + 1);
for (int i = 1; i <= m; ++i) {
int t1 = find(a[i].a), t2 = find(a[i].b);
if (t1 == t2) { printf("%d", a[i].c); return 0; }
f[t2] = find(a[i].a + n);
f[t1] = find(a[i].b + n);
}
cout << 0;
return 0;
}