'''
def main():
n,m = map(int,input().split())
edge = []
for i in range(m):
edge.append(list(map(int,input().split())))
minDist = [float('inf')]*(n+1)
minDist[1] = 0
for i in range(1,n):
update = False
for s,t,val in edge:
if minDist[s] != float('inf') and minDist[s] + val < minDist[t]:
minDist[t] = minDist[s] + val
update = True
if update == False:
break
if minDist[n] == float('inf'):
return "unconnected"
else:
return minDist[n]
if __name__ == '__main__':
print(main())
'''
import collections
def main():
n,m = map(int,input().split())
edge = [[] for i in range(n+1)] # 不能写成[[]*(n+1)] 这样写,生成的是一个空列表
for i in range(m):
s,t,val = map(int,input().split())
edge[s].append([t,val])
minDist= [float('inf')]*(n+1)
visit = [False]*(n+1)
que = collections.deque([1])
minDist[1] = 0
visit[1] = True
while que:
a = que.popleft()
visit[a] = False
for t,val in edge[a]:
if minDist[a] != float('inf') and minDist[a]+val < minDist[t]:
minDist[t] = minDist[a] + val
if visit[t] == False:
visit[t] = True
que.append(t)
if minDist[-1] == float('inf'):
return 'unconnected'
else:
return minDist[-1]
if __name__ == '__main__':
print(main())