var a:array[1..100,1..100]of longint;
b:array[1..100,0..100]of longint;
f:array[1..100]of longint;
d:array[1..100]of longint;
v:array[1..100]of boolean;
i,p,c,x,y,z,now,s,t,aa,bb:longint;
begin
readln(p,c);
for i:=1 to c do
begin
readln(x,y,z);
a[x,y]:=z;
a[y,x]:=z;
b[x,0]:=b[x,0]+1;
b[x,b[x,0]]:=y;
b[y,0]:=b[y,0]+1;
b[y,b[y,0]]:=x;
end;
readln(s,t);
for i:=1 to p do
d[i]:=maxlongint;
f[1]:=s;
d[s]:=0;
now:=f[1];
v[s]:=true;
aa:=1;
bb:=1;
while aa<=bb do
begin
now:=f[aa];
for i:=1 to b[now,0] do
begin
if d[b[now,i]]>a[b[now,i],now]+d[now] then
begin
d[b[now,i]]:=a[b[now,i],now]+d[now];
if not v[b[now,i]] then
begin
bb:=bb+1;
f[bb]:=b[now,i];
v[b[now,i]]:=true;
end;
end;
end;
v[now]:=false;
aa:=aa+1;
end;
writeln(d[t]);
end.
b:array[1..100,0..100]of longint;
f:array[1..100]of longint;
d:array[1..100]of longint;
v:array[1..100]of boolean;
i,p,c,x,y,z,now,s,t,aa,bb:longint;
begin
readln(p,c);
for i:=1 to c do
begin
readln(x,y,z);
a[x,y]:=z;
a[y,x]:=z;
b[x,0]:=b[x,0]+1;
b[x,b[x,0]]:=y;
b[y,0]:=b[y,0]+1;
b[y,b[y,0]]:=x;
end;
readln(s,t);
for i:=1 to p do
d[i]:=maxlongint;
f[1]:=s;
d[s]:=0;
now:=f[1];
v[s]:=true;
aa:=1;
bb:=1;
while aa<=bb do
begin
now:=f[aa];
for i:=1 to b[now,0] do
begin
if d[b[now,i]]>a[b[now,i],now]+d[now] then
begin
d[b[now,i]]:=a[b[now,i],now]+d[now];
if not v[b[now,i]] then
begin
bb:=bb+1;
f[bb]:=b[now,i];
v[b[now,i]]:=true;
end;
end;
end;
v[now]:=false;
aa:=aa+1;
end;
writeln(d[t]);
end.