#include<algorithm>
#include<iostream>
#include<vector>
#include<map>
using namespace std;
const int N=1e5+5;
struct Node2 {
int x;
int y;
bool operator<(const Node2& other) const {
if (x != other.x) return x < other.x;
return y < other.y;
}
};
struct Node {
int x;
int y;
int relation;
};
vector<int> f1, f2;
map<Node2, int> criminals2;
Node criminals[N];
int n, m;
bool cmp(Node x, Node y) {
return x.relation < y.relation;
}
bool check(int mid) {
f1.clear();
f2.clear();
for (int i = m - 1; i >= mid; i--) {
bool f_1 = false, f_2 = false;
for (int j = 0; j < f1.size(); j++) {
Node2 vv = { f1[j], criminals[i].x };
auto it = criminals2.find(vv);
if (it != criminals2.end() && it->second > criminals[mid].relation) {
f_1 = true;
break;
}
}
for (int j = 0; j < f2.size(); j++) {
Node2 vv = { f2[j], criminals[i].x };
auto it = criminals2.find(vv);
if (it != criminals2.end() && it->second > criminals[mid].relation) {
f_2 = true;
break;
}
}
if (f_1 && f_2) return false;
if (f_1 && !f_2) {
f2.push_back(criminals[i].x);
for (int j = 0; j < f2.size(); j++) {
Node2 vv = { f2[j], criminals[i].y };
auto it = criminals2.find(vv);
if (it != criminals2.end() && it->second > criminals[mid].relation)
return false;
}
f1.push_back(criminals[i].y);
} else if (f_2 && !f_1) {
f1.push_back(criminals[i].x);
for (int j = 0; j < f1.size(); j++) {
Node2 vv = { f1[j], criminals[i].y };
auto it = criminals2.find(vv);
if (it != criminals2.end() && it->second > criminals[mid].relation)
return false;
}
f2.push_back(criminals[i].y);
} else if (!f_1 && !f_2) {
f1.push_back(criminals[i].x);
f2.push_back(criminals[i].y);
}
}
return true;
}
int main() {
scanf("%d%d", &n, &m);
for (int i = 0; i < m; i++) {
scanf("%d%d%d", &criminals[i].x, &criminals[i].y, &criminals[i].relation);
criminals2[{criminals[i].x, criminals[i].y}] = criminals[i].relation;
criminals2[{criminals[i].y, criminals[i].x}] = criminals[i].relation;
}
sort(criminals, criminals + m, cmp);
int l = 0, r = m;
while (l < r) {
int mid = (l + r) >> 1;
if (check(mid)) r = mid;
else l = mid + 1;
}
if (l == 0) printf("0\n");
else printf("%d\n", criminals[l-1].relation);
return 0;
}