N, M = map(int, input().split()) adj = [[] for i in range(N)] for i in range(M): s, t, d = map(int, input().split()) s -= 1 t -= 1 adj[s].append((t, d)) adj[t].append((s, d)) from collections import deque def mindist(w): qu = deque([0]) dist = [-1] * N dist[0] = 0 while len(qu): v = qu.popleft() for nv, d in adj[v]: if d < w: continue if dist[nv] == -1: qu.append(nv) dist[nv] = dist[v] + 1 return dist[N - 1] st = 0 en = 10 ** 9 + 1 while en - st > 1: mid = (en + st) // 2 d = mindist(mid) if d == -1: en = mid else: st = mid print(st, mindist(st))