# 超时还有花在io上的时间import sys
input= sys.stdin.read
data =input().split()
index =0
V =int(data[index])
index +=1
E =int(data[index])
index +=1
graph =[]for i inrange(E):
p1 =int(data[index])
index +=1
p2 =int(data[index])
index +=1
val =int(data[index])
index +=1# p1 指向 p2,权值为 val
graph.append([p1, p2, val])
distance =[float("+inf")]*(V+1)
distance[1]=0for i inrange(1, V):# 如果不在更新就要退出了# updated = Falsefor s,t,v in graph:if distance[s]!=float("+inf")and distance[s]+ v < distance[t]:
distance[t]= distance[s]+ v
# updated = True# if not updated:# break# 这个算法还可以检测负环,只要再进行一次就好了。
updated =Falsefor s,t,v in graph:if distance[s]!=float("+inf")and distance[s]+ v < distance[t]:
distance[t]= distance[s]+ v
updated =Trueif updated:print("circle")
exit()print(distance[-1])if distance[-1]!=float("+inf")elseprint("unconnected")
import sys
input= sys.stdin.read
data =input().split()
index =0
V =int(data[index])
index +=1
E =int(data[index])
index +=1
graph =[]for i inrange(E):
p1 =int(data[index])
index +=1
p2 =int(data[index])
index +=1
val =int(data[index])
index +=1# p1 指向 p2,权值为 val
graph.append([p1, p2, val])
src =int(data[index])
index +=1
dst =int(data[index])
index +=1
k =int(data[index])
index +=1
distance =[float("+inf")]*(V+1)
distance[src]=0
distance_copy =[]for i inrange(0, k+1):# 如果不在更新就要退出了
distance_copy = distance[:]for s,t,v in graph:if distance[s]!=float("+inf")and distance_copy[s]+ v < distance[t]:
distance[t]= distance_copy[s]+ v
print(distance[dst])if distance[dst]!=float("+inf")elseprint("unreachable")