uses math;
const finp='';
fout='';
maxc=round(1e9);
maxn=20005;
type point=^ptype;
ptype=record
v,info:longint;
link:point;
end;
bg=record
key,cs:longint;
end;
var fi,fo:text;
g,g1:array[1..maxn] of point;
d,pos:array[0..maxn,1..2] of longint;
heap:array[1..2*maxn] of bg;
free:array[0..maxn,1..2] of boolean;
i,n,m,s,t,k,u,v,x,u1,nheap,j,test,y:longint;
Procedure them(u1,u2:longint);
var p:point;
begin
new(p);
p^.v:=u2;
p^.info:=x;
p^.link:=g[u];
g[u]:=p;
end;
Procedure them1(u1,u2:longint);
var p:point;
begin
new(p);
p^.v:=u2;
p^.info:=x;
p^.link:=g1[u];
g1[u]:=p;
end;
Procedure update(v,u:longint);
var parent,child:longint;
begin
child:=pos[v,u];
if child=0 then
begin
inc(nheap);child:=nheap;
end;
parent:=child div 2;
while (parent>0) and (d[heap[parent].key,heap[parent].cs]>d[v,u]) do
begin
heap[child]:=heap[parent];
pos[heap[child].key,heap[child].cs]:=child;
child:=parent;
parent:=child div 2;
end;
heap[child].key:=v;
heap[child].cs:=u;
pos[v,u]:=child;
end;
Function pop:longint;
var r,c,v,v1:longint;
begin
pop:=heap[1].key;u1:=heap[1].cs;
v:=heap[nheap].key;v1:=heap[nheap].cs;
dec(nheap);
r:=1;
while r*2<=nheap do
begin
c:=r*2;
if (c<nheap) and (d[heap[c+1].key,heap[c+1].cs]<d[heap[c].key,heap[c].cs]) then inc(c);
if d[v,v1]<=d[heap[c].key,heap[c].cs] then break;
heap[r]:=heap[c];
pos[heap[r].key,heap[r].cs]:=r;
r:=c;
end;
heap[r].key:=v;
heap[r].cs:=v1;
pos[v,v1]:=r;
end;
Procedure dijkstra;
var p:point;
begin
for i:=1 to n do
for j:=1 to 2 do free[i,j]:=false;
for i:=1 to n do
for j:=1 to 2 do pos[i,j]:=0;
for i:=1 to n do
for j:=1 to 2 do d[i,j]:=maxc;
nheap:=0;
d[s,1]:=0;
update(s,1);
repeat
u:=pop;
if (u=t) and (u=0) then break;
free[u,u1]:=true;
if u1=1 then
begin
p:=g[u];
while p<>nil do
begin
v:=p^.v;
if not free[v,1] and (d[v,1]>d[u,1]+p^.info) then
begin
d[v,1]:=d[u,1]+p^.info;
update(v,1);
end;
p:=p^.link;
end;
p:=g1[u];
while p<>nil do
begin
v:=p^.v;
if not free[v,2] and (d[v,2]>d[u,1]+p^.info) then
begin
d[v,2]:=d[u,1]+p^.info;
update(v,2);
end;
p:=p^.link;
end;
end else
begin
p:=g[u];
while p<>nil do
begin
v:=p^.v;
if not free[v,2] and (d[v,2]>d[u,2]+p^.info) then
begin
d[v,2]:=d[u,2]+p^.info;
update(v,2);
end;
p:=p^.link;
end;
end;
if nheap=0 then break;
until false;
if (d[t,1]=maxc) and (d[t,2]=maxc) then writeln(fo,-1) else
writeln(fo,min(d[t,1],d[t,2]));
end;
BEGIN
assign(fi,finp);reset(fi);
assign(fo,fout);rewrite(fo);
readln(fi,test);
for y:=1 to test do
begin
readln(fi,n,m,k,s,t);
for i:=1 to n do
begin
g[i]:=nil;g1[i]:=nil;
end;
for i:=1 to m do
begin
readln(fi,u,v,x);
them(u,v);
end;
for i:=1 to k do
begin
readln(fi,u,v,x);
them1(u,v);
them1(v,u);
end;
dijkstra;
end;
close(fi);close(fo);
END.
dXNlcyAgICBtYXRoOwpjb25zdCAgIGZpbnA9Jyc7CiAgICAgICAgZm91dD0nJzsKICAgICAgICBtYXhjPXJvdW5kKDFlOSk7CiAgICAgICAgbWF4bj0yMDAwNTsKdHlwZSAgICBwb2ludD1ecHR5cGU7CiAgICAgICAgcHR5cGU9cmVjb3JkCiAgICAgICAgIHYsaW5mbzpsb25naW50OwogICAgICAgICBsaW5rOnBvaW50OwogICAgICAgICBlbmQ7CiAgICAgICAgYmc9cmVjb3JkCiAgICAgICAgIGtleSxjczpsb25naW50OwogICAgICAgICBlbmQ7Cgp2YXIgICAgIGZpLGZvOnRleHQ7CiAgICAgICAgZyxnMTphcnJheVsxLi5tYXhuXSBvZiBwb2ludDsKICAgICAgICBkLHBvczphcnJheVswLi5tYXhuLDEuLjJdIG9mIGxvbmdpbnQ7CiAgICAgICAgaGVhcDphcnJheVsxLi4yKm1heG5dIG9mIGJnOwogICAgICAgIGZyZWU6YXJyYXlbMC4ubWF4biwxLi4yXSBvZiBib29sZWFuOwogICAgICAgIGksbixtLHMsdCxrLHUsdix4LHUxLG5oZWFwLGosdGVzdCx5OmxvbmdpbnQ7CgpQcm9jZWR1cmUgdGhlbSh1MSx1Mjpsb25naW50KTsKdmFyICAgICBwOnBvaW50OwpiZWdpbgogICAgICAgIG5ldyhwKTsKICAgICAgICBwXi52Oj11MjsKICAgICAgICBwXi5pbmZvOj14OwogICAgICAgIHBeLmxpbms6PWdbdV07CiAgICAgICAgZ1t1XTo9cDsKZW5kOwoKUHJvY2VkdXJlIHRoZW0xKHUxLHUyOmxvbmdpbnQpOwp2YXIgICAgIHA6cG9pbnQ7CmJlZ2luCiAgICAgICAgbmV3KHApOwogICAgICAgIHBeLnY6PXUyOwogICAgICAgIHBeLmluZm86PXg7CiAgICAgICAgcF4ubGluazo9ZzFbdV07CiAgICAgICAgZzFbdV06PXA7CmVuZDsKClByb2NlZHVyZSB1cGRhdGUodix1OmxvbmdpbnQpOwp2YXIgICAgIHBhcmVudCxjaGlsZDpsb25naW50OwpiZWdpbgogICAgICAgIGNoaWxkOj1wb3Nbdix1XTsKICAgICAgICBpZiBjaGlsZD0wIHRoZW4KICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgIGluYyhuaGVhcCk7Y2hpbGQ6PW5oZWFwOwogICAgICAgICBlbmQ7CiAgICAgICAgcGFyZW50Oj1jaGlsZCBkaXYgMjsKICAgICAgICB3aGlsZSAocGFyZW50PjApIGFuZCAoZFtoZWFwW3BhcmVudF0ua2V5LGhlYXBbcGFyZW50XS5jc10+ZFt2LHVdKSBkbwogICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgaGVhcFtjaGlsZF06PWhlYXBbcGFyZW50XTsKICAgICAgICAgICAgICAgIHBvc1toZWFwW2NoaWxkXS5rZXksaGVhcFtjaGlsZF0uY3NdOj1jaGlsZDsKICAgICAgICAgICAgICAgIGNoaWxkOj1wYXJlbnQ7CiAgICAgICAgICAgICAgICBwYXJlbnQ6PWNoaWxkIGRpdiAyOwogICAgICAgICBlbmQ7CiAgICAgICAgaGVhcFtjaGlsZF0ua2V5Oj12OwogICAgICAgIGhlYXBbY2hpbGRdLmNzOj11OwogICAgICAgIHBvc1t2LHVdOj1jaGlsZDsKZW5kOwoKRnVuY3Rpb24gcG9wOmxvbmdpbnQ7CnZhciAgICAgcixjLHYsdjE6bG9uZ2ludDsKYmVnaW4KICAgICAgICBwb3A6PWhlYXBbMV0ua2V5O3UxOj1oZWFwWzFdLmNzOwogICAgICAgIHY6PWhlYXBbbmhlYXBdLmtleTt2MTo9aGVhcFtuaGVhcF0uY3M7CiAgICAgICAgZGVjKG5oZWFwKTsKICAgICAgICByOj0xOwogICAgICAgIHdoaWxlIHIqMjw9bmhlYXAgZG8KICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgIGM6PXIqMjsKICAgICAgICAgICAgICAgIGlmIChjPG5oZWFwKSBhbmQgKGRbaGVhcFtjKzFdLmtleSxoZWFwW2MrMV0uY3NdPGRbaGVhcFtjXS5rZXksaGVhcFtjXS5jc10pIHRoZW4gaW5jKGMpOwogICAgICAgICAgICAgICAgaWYgZFt2LHYxXTw9ZFtoZWFwW2NdLmtleSxoZWFwW2NdLmNzXSB0aGVuIGJyZWFrOwogICAgICAgICAgICAgICAgaGVhcFtyXTo9aGVhcFtjXTsKICAgICAgICAgICAgICAgIHBvc1toZWFwW3JdLmtleSxoZWFwW3JdLmNzXTo9cjsKICAgICAgICAgICAgICAgIHI6PWM7CiAgICAgICAgIGVuZDsKICAgICAgICBoZWFwW3JdLmtleTo9djsKICAgICAgICBoZWFwW3JdLmNzOj12MTsKICAgICAgICBwb3Nbdix2MV06PXI7CmVuZDsKClByb2NlZHVyZSBkaWprc3RyYTsKdmFyICAgICBwOnBvaW50OwpiZWdpbgogICAgICAgIGZvciBpOj0xIHRvIG4gZG8KICAgICAgICAgZm9yIGo6PTEgdG8gMiBkbyBmcmVlW2ksal06PWZhbHNlOwogICAgICAgIGZvciBpOj0xIHRvIG4gZG8KICAgICAgICAgZm9yIGo6PTEgdG8gMiBkbyBwb3NbaSxqXTo9MDsKICAgICAgICBmb3IgaTo9MSB0byBuIGRvCiAgICAgICAgIGZvciBqOj0xIHRvIDIgZG8gZFtpLGpdOj1tYXhjOwogICAgICAgIG5oZWFwOj0wOwogICAgICAgIGRbcywxXTo9MDsKICAgICAgICB1cGRhdGUocywxKTsKICAgICAgICByZXBlYXQKICAgICAgICAgICAgICAgIHU6PXBvcDsKICAgICAgICAgICAgICAgIGlmICh1PXQpIGFuZCAodT0wKSB0aGVuIGJyZWFrOwogICAgICAgICAgICAgICAgZnJlZVt1LHUxXTo9dHJ1ZTsKICAgICAgICAgICAgICAgIGlmIHUxPTEgdGhlbgogICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgIHA6PWdbdV07CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHA8Pm5pbCBkbwogICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Oj1wXi52OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBmcmVlW3YsMV0gYW5kIChkW3YsMV0+ZFt1LDFdK3BeLmluZm8pIHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRbdiwxXTo9ZFt1LDFdK3BeLmluZm87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUodiwxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA6PXBeLmxpbms7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHA6PWcxW3VdOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSBwPD5uaWwgZG8KICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjo9cF4udjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgZnJlZVt2LDJdIGFuZCAoZFt2LDJdPmRbdSwxXStwXi5pbmZvKSB0aGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkW3YsMl06PWRbdSwxXStwXi5pbmZvOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlKHYsMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwOj1wXi5saW5rOwogICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwogICAgICAgICAgICAgICAgIGVuZCBlbHNlCiAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgcDo9Z1t1XTsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgcDw+bmlsIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY6PXBeLnY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGZyZWVbdiwyXSBhbmQgKGRbdiwyXT5kW3UsMl0rcF4uaW5mbykgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFt2LDJdOj1kW3UsMl0rcF4uaW5mbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZSh2LDIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcDo9cF4ubGluazsKICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICBpZiBuaGVhcD0wIHRoZW4gYnJlYWs7CiAgICAgICAgdW50aWwgZmFsc2U7CiAgICAgICAgaWYgKGRbdCwxXT1tYXhjKSBhbmQgKGRbdCwyXT1tYXhjKSB0aGVuIHdyaXRlbG4oZm8sLTEpIGVsc2UKICAgICAgICAgd3JpdGVsbihmbyxtaW4oZFt0LDFdLGRbdCwyXSkpOwplbmQ7CgpCRUdJTgogICAgICAgIGFzc2lnbihmaSxmaW5wKTtyZXNldChmaSk7CiAgICAgICAgYXNzaWduKGZvLGZvdXQpO3Jld3JpdGUoZm8pOwogICAgICAgIHJlYWRsbihmaSx0ZXN0KTsKICAgICAgICBmb3IgeTo9MSB0byB0ZXN0IGRvCiAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICByZWFkbG4oZmksbixtLGsscyx0KTsKICAgICAgICAgICAgICAgIGZvciBpOj0xIHRvIG4gZG8KICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICBnW2ldOj1uaWw7ZzFbaV06PW5pbDsKICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICBmb3IgaTo9MSB0byBtIGRvCiAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgcmVhZGxuKGZpLHUsdix4KTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhlbSh1LHYpOwogICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgIGZvciBpOj0xIHRvIGsgZG8KICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICByZWFkbG4oZmksdSx2LHgpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGVtMSh1LHYpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGVtMSh2LHUpOwogICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgIGRpamtzdHJhOwogICAgICAgICBlbmQ7CiAgICAgICAgY2xvc2UoZmkpO2Nsb3NlKGZvKTsKRU5ELgoKCgo=