intunionFind(int x){ return f[x] == x ? x : f[x] = unionFind(f[x]); }
intmain(){ read(n), read(m); for (int i = 1; i <= n; ++i) f[i] = i; for (int i = 1; i <= m; ++i) read(g[i].u), read(g[i].v), read(g[i].w); std::sort(g + 1, g + m + 1); for (int i = 1; i <= m; ++i) { if (unionFind(g[i].u) == unionFind(g[i].v)) { printf("%d\n", g[i].w); return0; } if (!b[g[i].u]) b[g[i].u] = g[i].v; else f[unionFind(b[g[i].u])] = unionFind(g[i].v); if (!b[g[i].v]) b[g[i].v] = g[i].u; else f[unionFind(b[g[i].v])] = unionFind(g[i].u); } puts("0"); return0; }