def g;gets.split.map(&:to_i)end N,M,S,G=g L=(0...N).map{[1e9]*N} d=L.map{[]} N.times{|i|L[i][i]=0} M.times{ a,b,c=g L[a][b]=L[b][a]=c d[a][b]=d[b][a]=1 } N.times{|k|N.times{|i|N.times{|j|L[i][j]=[L[i][j],L[i][k]+L[k][j]].min}}} ans=[s=S] while s!=G ans<