from collections import deque import sys input = sys.stdin.buffer.readline sys.setrecursionlimit(10 ** 7) inf = 10**18 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(m): dist = [inf] * N dist[0] = 0 q = deque([0]) while q: s = q.popleft() for t, d in G[s]: if m > d: continue if dist[t] > dist[s] + 1: dist[t] = dist[s] + 1 q.append(t) return dist[N-1] l = 0 r = 10 ** 10 while r - l > 1: m = (r + l) // 2 L = bfs(m) if L >= inf: r = m else: l = m print(l, bfs(l))