#include <bits/stdc++.h>
using namespace std;
void re(int &x) {
  x = 0;
  int b = 0;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') b = 1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x << 1) + (x << 3) + ch - '0';
    ch = getchar();
  }
  if (b == 1) x *= -1;
}
int n, m, cnt, tot, flag;
set<int> s;
struct node {
  int f, to, v;
} qwq[110000];
bool cmp(node x, node y) { return x.v < y.v; }
int main() {
  re(n), re(m);
  for (int i = 1; i <= m; i++) {
    int x, y, z;
    re(x), re(y), re(z);
    qwq[++cnt] = (node){x, y + 10000, z};
  }
  sort(qwq + 1, qwq + 1 + m, cmp);
  for (int i = 1; i <= m; i++) {
    int l = qwq[i].f;
    int r = qwq[i].to;
    if (s.count(l) == 0) {
      s.insert(l);
      tot++;
    }
    if (s.count(r) == 0) {
      s.insert(r);
      tot++;
    }
    if (tot == 2 * n) {
      flag = 1;
      printf("%d", qwq[i].v);
      break;
    }
  }
  if (!flag) printf("-1");
  return 0;
}
