#include <bits/stdc++.h>
using namespace std;
struct edge {
  int u, v, d;
  edge(int a, int b, int c) {
    u = a;
    v = b;
    d = c;
  }
};
vector<edge> ed;
vector<int> G[20004];
int n, m, match[20004], dist[20004];
bool bfs() {
  int i, u, v, len;
  queue<int> Q;
  for (i = 1; i <= n; i++) {
    if (match[i] == 0) {
      dist[i] = 0;
      Q.push(i);
    } else
      dist[i] = (1 << 28);
  }
  dist[0] = (1 << 28);
  while (!Q.empty()) {
    u = Q.front();
    Q.pop();
    if (u != 0) {
      len = G[u].size();
      for (i = 0; i < len; i++) {
        v = G[u][i];
        if (dist[match[v]] == (1 << 28)) {
          dist[match[v]] = dist[u] + 1;
          Q.push(match[v]);
        }
      }
    }
  }
  return (dist[0] != (1 << 28));
}
bool dfs(int u) {
  int i, v, len;
  if (u != 0) {
    len = G[u].size();
    for (i = 0; i < len; i++) {
      v = G[u][i];
      if (dist[match[v]] == dist[u] + 1) {
        if (dfs(match[v])) {
          match[v] = u;
          match[u] = v;
          return true;
        }
      }
    }
    dist[u] = (1 << 28);
    return false;
  }
  return true;
}
int hopcroft_karp() {
  int matching = 0, i;
  while (bfs())
    for (i = 1; i <= n; i++)
      if (match[i] == 0 && dfs(i)) matching++;
  return matching;
}
void solve() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int u, v, d;
    cin >> u >> v >> d;
    ed.push_back(edge(u, v, d));
  }
  int l = 0, r = 1e9 + 1;
  while (l < r) {
    int mid = l + (r - l) / 2;
    for (int i = 1; i <= 2 * n; i++) {
      G[i].clear();
      match[i] = 0;
      dist[i] = 0;
    }
    for (int i = 0; i < m; i++) {
      int d = ed[i].d;
      if (d > mid) continue;
      int u = ed[i].u;
      int v = ed[i].v;
      G[u].push_back(n + v);
      G[n + v].push_back(u);
    }
    int matching = hopcroft_karp();
    if (matching == n)
      r = mid;
    else
      l = mid + 1;
  }
  if (l == 1e9 + 1) l = -1;
  cout << l;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  int t;
  t = 1;
  while (t--) {
    solve();
  }
}
