#include <bits/stdc++.h>
using namespace std;
signed main() {
  long long n, m, lo, hi, mid, ans;
  cin >> n >> m;
  vector<pair<long long, pair<long long, long long>>> v(m);
  lo = 1e10;
  hi = -lo;
  for (auto &it : v) {
    cin >> it.second.first >> it.second.second >> it.first;
    lo = min(lo, it.first);
    hi = max(hi, it.first);
  }
  sort(v.begin(), v.end());
  ans = -1;
  lo = 0;
  hi = m - 1;
  while (lo <= hi) {
    mid = v[(lo + hi) / 2LL].first;
    set<int> fact, city;
    for (auto it : v) {
      if (it.first > mid) break;
      if (fact.find(it.second.first) != fact.end() and
          city.find(it.second.second) != city.end())
        continue;
      fact.insert(it.second.first);
      city.insert(it.second.second);
    }
    if ((int)fact.size() == n and (int) city.size() == n) {
      if (ans == -1) ans = mid;
      ans = min(mid, ans);
      hi = (lo + hi) / 2LL - 1;
    } else {
      lo = (lo + hi) / 2LL + 1;
    }
  }
  cout << ans;
  return 0;
}
