var
c,s,p,i:longint;
x,y:array[1..500] of longint;
w:array[1..500,1..500] of real;
d:array[1..500] of real;
used:array[1..500] of boolean;
procedure init;
var
i,j:longint;
begin
fillchar(x,sizeof(x),0);
fillchar(y,sizeof(y),0);
fillchar(w,sizeof(w),0);
fillchar(d,sizeof(d),0);
fillchar(used,sizeof(used),false);
read(s,p);
for i:=1 to p do
read(x[i],y[i]);
for i:=1 to p do
for j:=1 to p do
w[i,j]:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
end;
procedure prim(s:longint);
var
i,k,pos:longint;
min:real;
begin
for i:=1 to p do
d[i]:=w[s,i];
used[s]:=true;
for k:=1 to p-1 do
begin
min:=maxlongint;
for i:=1 to p do
if (not used[i]) and (d[i]
begin
min:=d[i];
pos:=i;
end;
used[pos]:=true;
for i:=1 to
p do
if (not used[i]) and (d[i]>w[pos,i]) then
d[i]:=w[pos,i]
end;
end;
procedure swap(var a,b:real);
var
t:real;
begin
t:=a;a:=b;b:=t;
end;
procedure qsort(l,r:longint);
var
i,j:longint;
m:real;
begin
i:=l;
j:=r;
m:=d[(l+r) shr 1];
repeat
while d[i]>m do inc(i);
while d[j]
if i<=j then
begin
swap(d[i],d[j]);
inc(i);
dec(j);
end;
until i>j;
if j>l then qsort(l,j);
if i
end;
procedure main;
var
i:longint;
begin
prim(1);
qsort(1,p);
writeln(d[s]:0:2);
end;
begin
read(c);
for i:=1 to c do
begin
init;
main;
end;
end.