from collections import deque N, M = map(int, input().split()) G = [[] for _ in range(N)] for _ in range(M): s, t, d = map(int, input().split()) s -= 1 t -= 1 G[s].append((t, d)) G[t].append((s, d)) def bfs(lim): que = deque([0]) dist = [-1] * N dist[0] = 0 while que: node = que.popleft() nears = G[node] for near, d in nears: if dist[near] != -1: continue if d >= lim: dist[near] = dist[node] + 1 que.append(near) return dist[-1] left = 0 right = 10 ** 18 while right - left > 1: mid = (right + left) // 2 if bfs(mid) == -1: right = mid else: left = mid print(left, bfs(left))