#include<stdio.h>
#include<algorithm>
using namespace std;
#include<math.h>
struct edge
{
int st,ed;
double va;
}num1[10005];
struct point
{
int x,y;
}num2[200];
int p[200];
int find(int n)
{
if(p[n]!=n)
{
p[n]=find(p[n]);
}
return p[n];
}
int cmp(edge a,edge b)
{
return a.va<b.va;
}
int main()
{
int t,n,i,j,k;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
scanf("%d",&n);
for(i=1,k=1;i<=n;i++)
{
scanf("%d%d",&num2[i].x,&num2[i].y);
for(j=1;j<i;j++)
{
num1[k].st=j;
num1[k].ed=i;
num1[k].va=sqrt((double)((num2[i].x-num2[j].x)*(num2[i].x-num2[j].x)+(num2[i].y-num2[j].y)*(num2[i].y-num2[j].y)));
k++;
}
}
for(i=1;i<=n;i++)
{
p[i]=i;
}
sort(num1+1,num1+k+1,cmp);
int tot=0;
int a,b;
i=1;
double sum=0;
int flag=0;
while(tot<n-1)
{
a=find(num1[i].st);
b=find(num1[i].ed);
if(a!=b)
{
if(num1[i].va>=10.0&&num1[i].va<=1000.0)
{
tot++;
p[a]=b;
sum+=num1[i].va*100;
}
}
i++;
if(i==k-1)
{
flag=1;
break;
}
}
if(flag==1)
{
puts("oh!");
}
else
{
printf("%.1f\n",sum);
}
}
}
}