#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
using namespace std;
const int maxd = 105;
int x[maxd], y[maxd];
double edge[20000];
int num;
double ans;
int flag;
int t, n;
int p[30000], r[30000];
int u[20000], v[20000];
bool cmp(int i, int j)
{
return edge[i] < edge[j];
}
int find(int x)
{
return p[x] == x ? x : p[x] = find(p[x]);
}
void Kruskal( )
{
for(int i = 0; i < n; i++) p[i] = i;
for(int i = 0; i < num; i++) r[i] = i;
sort(r, r+num, cmp);
ans = 0;
flag = 0;
for(int i = 0; i < num; i++)
{
int e = r[i];
int x = find(u[e]);
int y = find(v[e]);
if( x != y )
{
ans += edge[e];
p[x] = y;
flag++;
}
}
if(flag < n-1)
printf("oh!\n");
else
printf("%.1lf\n",ans*100);
}
int main()
{
//freopen("ztest.txt","r",stdin);
scanf("%d",&t);
while(t--)
{
num = 0;
scanf("%d",&n);
for(int i = 0; i < n; i++)
scanf("%d%d", &x[i], &y[i]);
for(int i = 0; i < n-1; i++)
for(int j = i+1; j < n; j++)
{
double distance = sqrt((x[i] - x[j])*(x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]));
if(distance >= 10 && distance <= 1000)
{
u[num] = i;
v[num] = j;
edge[num++] = distance;
}
}
Kruskal( );
}
return 0;
}