from collections import deque n,m = map(int,input().split()) st = [[] for i in range(n)] for i in range(m): s,t,d = map(int,input().split()) s -= 1 t -= 1 st[s].append([t,d]) st[t].append([s,d]) wa = 10**10#敢えて-1している(ダメな方) ac = 1#OKな方 while ac+1 < wa: tmp = 0 mid = (wa + ac) //2 #print(mid) #判定書く chk = [0]*(n) d = deque() d.append(0) f = False while len(d): if f == True: break tmp = d.popleft() for i in st[tmp]: t = i[0] dt = i[1] if chk[t] == 0 and dt >= mid: if t == n-1: f = True #print(mid,f,"fff") break chk[t] = 1 d.append(t) if f == True: ac = mid else: wa = mid #print(ac) chk = [-1]*(n) d = deque() d.append(0) f = False chk[0] = 0 while len(d): if f == True: break tmp = d.popleft() for i in st[tmp]: t = i[0] dt = i[1] if chk[t] == -1 and dt >= ac: if t == n-1: f = True chk[t] = chk[tmp]+1 #print(mid,f,"fff") break chk[t] = chk[tmp]+1 d.append(t) print(ac,chk[n-1])