#!/usr/bin/env python
import sys

Vn = 0
G = [{}]

def setNode(n):
  global G, Vn
  Vn = n
  G = [{} for i in range(Vn)]
def addEdge(s,t,w):
  global G
  G[s][t]=w
def solve(s,t):
  global G, Vn
  distance = [sys.maxsize for i in range(Vn)]
  distance[s] = 0
  count = 0
  updated = True
  while updated:
    updated = False
    for i in range(Vn):
      if distance[i] != sys.maxsize:
        for j in G[i]:
          d = distance[i] + G[i][j]
          if (d < distance[j]):
            distance[j] = d
            updated = True
            if count == Vn-1: raise NameError('negative loop')
    count += 1
  return distance[t]

n,m = map(int,input().split())
setNode(n)
for i in range(m):
  s,t,w = map(int,input().split())
  addEdge(s,t,w)
src, dst = map(int,input().split())
print(solve(src,dst))
