#include <bits/stdc++.h>
using namespace std;
const long long int inf = 1e9 + 7;
const long long int mod = 998244353;
long long int maxi(long long int a, long long int b) {
  if (a >= b) return a;
  return b;
}
long long int mini(long long int a, long long int b) {
  if (a >= b) return b;
  return a;
}
struct three_val {
  long long int u, v, w;
};
bool cmp(three_val a1, three_val b1) { return a1.w < b1.w; }
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  cout.tie(nullptr);
  long long int n, m;
  cin >> n >> m;
  vector<three_val> E;
  for (long long int i = 0; i < m; i++) {
    long long int u, v, w;
    cin >> u >> v >> w;
    three_val e = {u, v, w};
    E.push_back(e);
  }
  sort(E.begin(), E.end(), cmp);
  long long int c1 = 0, c2 = 0;
  map<long long int, long long int> cnt1, cnt2;
  long long int ans = 0;
  for (long long int i = 0; i < m; i++) {
    long long int d = 0;
    if (cnt1[E[i].u] > 1 && cnt2[E[i].v] > 1) continue;
    if (cnt1[E[i].u] < 1) c1++, cnt1[E[i].u]++, d = 1;
    if (cnt2[E[i].v] < 1) c2++, cnt2[E[i].v]++, d = 1;
    if (d == 0) continue;
    ans = maxi(E[i].w, ans);
    if (c1 >= n && c2 >= n) break;
  }
  if (c1 != n || c2 != n)
    cout << "-1";
  else
    cout << ans;
  return 0;
}
