## https://yukicoder.me/problems/no/3490 from collections import deque def reachable(N, next_nodes, height): queue = deque() passed = [False] * N passed[0] = True queue.append(0) while len(queue) > 0: v = queue.popleft() for w, h in next_nodes[v]: if h >= height: if not passed[w]: passed[w] = True queue.append(w) return passed[N - 1] def main(): N, M = map(int, input().split()) next_nodes = [[] for _ in range(N)] max_h = 0 for _ in range(M): u, v, h = map(int, input().split()) next_nodes[u - 1].append((v - 1, h)) next_nodes[v - 1].append((u - 1, h)) max_h = max(max_h, h) if not reachable(N, next_nodes, 1): print("NaN") return low = 1 high = max_h while high - low > 1: mid = (high + low) // 2 if reachable(N, next_nodes, mid): low = mid else: high = mid if reachable(N, next_nodes, high): print(high) else: print(low) if __name__ == "__main__": main()