#include<bits/stdc++.h>
using namespace std;
struct _{
int x;
int y;
int t;
}lu[100005];
bool cmp(_ a, _ b) {
return a.t < b.t;
}
int n, m;
int father[1005];
int Rank[1005];
void init() {
for(int i = 1; i <= n; i ++) {
father[i] = i;
Rank[i] = 1;
}
return;
}
int find(int x) {
if(father[x] == x) return x;
else return find(father[x]);
}
void merge(int i,int j) {
int find_i = find(i);
int find_j = find(j);
if(Rank[find_i] >= Rank[find_j]) {
father[find_j] = find_i;
}else{
father[find_i] = find_j;
}
if(Rank[find_i] == Rank[find_j] && find_i != find_j) {
Rank[find_j] ++;
}
return;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
init();
for(int i = 1; i <= m; i++) cin >> lu[i].x >> lu[i].y >> lu[i].t;
sort(lu + 1,lu + m + 1, cmp);
for (int i = 1; i <= m; i++) {
merge(lu[i].x,lu[i].y);
bool flag= true;
for(int j = 1; j < n; j ++) {
if(find(j) != find(j + 1)) {
flag = false;
break;
}
}
if(flag) {
cout << lu[i].t;
return 0;
}
}
cout << -1;
}