uses math;
var
a,b,c,d,e,i,j,k:longint;
f:array[0..101,0..101]of real;
v:array[0..101,1..4]of longint;
begin
assign(input,'warp.in');reset(input);
assign(output,'warp.out');rewrite(output);
while not eof do
begin
readln(a);
if a=-1 then
halt;
fillchar(v,sizeof(v),0);
for b:=1 to a do
readln(v[b,1],v[b,2],v[b,3],v[b,4]);
readln(v[0,1],v[0,2],v[0,3]);
readln(v[a+1,1],v[a+1,2],v[a+1,3]);
fillchar(f,sizeof(f),0);
for b:=0 to a+1 do
begin
for c:=0 to a+1 do
begin
f[b,c]:=sqrt(sqr(v[b,1]-v[c,1])+sqr(v[b,2]-v[c,2])+sqr(v[b,3]-v[c,3]));
f[b,c]:=f[b,c]-v[b,4]-v[c,4];
if f[b,c]<0 then f[b,c]:=0;
end;
end;
for k:=0 to a+1 do
begin
for i:=0 to a+1 do
begin
for j:=0 to a+1 do
begin
f[i,j]:=min(f[i,k]+f[k,j],f[i,j]);
end;
end;
end;
writeln((f[0,a+1]*10):0:0);
end;
close(input);
close(output);
end.