program amenzi;
type lista=^celula;
celula=record
info:longint;
timp:longint;
next:lista;
end;
var n,m,k,p,i,x,y,z,j,h:longint;
d:array [1..150,0..150,0..1] of longint;
a,b:array [1..150,0..3500] of int64;
r:lista;
begin
assign(input,'amenzi.in');
reset(input);
assign(output,'amenzi.out');
rewrite(output);
readln(n,m,k,p);
for i:=1 to m do
begin
readln(x,y,z);
inc(d[x,0,0]);
d[x,d[x,0,0],0]:=y;
d[x,d[x,0,0],1]:=z;
inc(d[y,0,0]);
d[y,d[y,0,0],0]:=x;
d[y,d[y,0,0],1]:=z;
end;
for i:=1 to n do
begin
inc(d[i,0,0]);
d[i,d[i,0,0],0]:=i;
d[i,d[i,0,0],1]:=1;
end;
for i:=1 to k do
begin
readln(x,y,z);
b[x,y]:=b[x,y]+z;
end;
for i:=0 to 3500 do
for j:=1 to n do a[j,i]:=-1;
a[1,0]:=0;
for i:=1 to 3500 do
begin
for j:=1 to n do
begin
for h:=1 to d[j,0,0] do
begin
if i-d[j,h,1]>=0 then
if a[d[j,h,0],i-d[j,h,1]]<>-1 then
if a[d[j,h,0],i-d[j,h,1]]>=a[j,i] then a[j,i]:=a[d[j,h,0],i-d[j,h,1]];
end;
{ r:=d[j];
while (r<>nil) do
begin
if i-r^.timp>=0 then
if a[r^.info,i-r^.timp]<>-1 then
if a[r^.info,i-r^.timp] >=a[j,i] then a[j,i]:= a[r^.info,i-r^.timp];
r:=r^.next;
end; }
{ for h:=1 to n do
begin
if d[j,h]>0 then
if (i-d[j,h]>=0)then
if (a[h,i-d[j,h]]<>-1) then
if a[h,i-d[j,h]]>=a[j,i] then a[j,i]:=a[h,i-d[j,h]];
end;}
if a[j,i]<>-1 then a[j,i]:=a[j,i]+b[j,i];
end;
end;
for i:=1 to p do
begin
readln(x,y);
writeln(a[x,y]);
end;
close(output);
end.