#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
using namespace std;
const int N=105;
const int Max=20000;
int n;
double a[N],d[N][N],total;
bool f[N];
struct point
{
double x,y;
}p[N];
double dist(point p1,point p2)
{
return(sqrt((double)(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)));
}
void path()
{
int k;
f[1]=1;
k=1;
total=0;
for(int i=2;i<=n;i++)
{
int mcost=Max;
for(int j=2;j<=n;j++)
{
if(!f[j]&&(a[j]<mcost))
{
mcost=a[j];
k=j;
}
}
f[k]=1;
total+=a[k];
for(int t=2;t<=n;t++)
{
if(!f[t]&&(d[k][t]<a[t]))
a[t]=d[k][t];
}
}
return;
}
int main()
{
while(cin>>n)
{
for(int i=1;i<=n;i++)
{
cin>>p[i].x>>p[i].y;
f[i]=0;
}
for(int i=1;i<=n;i++)
{
for(int j=i+1;j<=n;j++)
{
d[i][j]=dist(p[i],p[j]);
d[j][i]=d[i][j];
}
}
for(int k=2;k<=n;k++)
{
a[k]=d[1][k];
}
a[1]=0;
path();
printf("%.2lf\n",total);
//cout<<a[s]<<endl;
}
return 0;
}