#include<cstdio>
#include<cmath>
#include<iostream>
using namespace std;
#define inf 0x7ffffff
struct node
{
double x,y;
}a[105];
int n;
double mp[105][105];
void prim()
{
int k,i,j;
double min,sum=0.0,lowcast[105]={0};
lowcast[1]=0;
for(i=2;i<=n;i++)
lowcast[i]=mp[1][i];
for(i=2;i<=n;i++)
{
min=inf;
for(j=1;j<=n;j++)
if(min>lowcast[j]&&lowcast[j])
{
min=lowcast[j];
k=j;
}
sum+=min;
lowcast[k]=0;
for(j=1;j<=n;j++)
if(mp[k][j]<lowcast[j]&&lowcast[j])
lowcast[j]=mp[k][j];
}
printf("%.2lf\n",sum);
}
int main()
{
int i,j;
while(cin>>n)
{
for(i=1;i<=n;i++)
cin>>a[i].x>>a[i].y;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)
mp[i][j]=inf;
else
mp[i][j]=sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
prim();
}
return 0;
}
#include<cmath>
#include<iostream>
using namespace std;
#define inf 0x7ffffff
struct node
{
double x,y;
}a[105];
int n;
double mp[105][105];
void prim()
{
int k,i,j;
double min,sum=0.0,lowcast[105]={0};
lowcast[1]=0;
for(i=2;i<=n;i++)
lowcast[i]=mp[1][i];
for(i=2;i<=n;i++)
{
min=inf;
for(j=1;j<=n;j++)
if(min>lowcast[j]&&lowcast[j])
{
min=lowcast[j];
k=j;
}
sum+=min;
lowcast[k]=0;
for(j=1;j<=n;j++)
if(mp[k][j]<lowcast[j]&&lowcast[j])
lowcast[j]=mp[k][j];
}
printf("%.2lf\n",sum);
}
int main()
{
int i,j;
while(cin>>n)
{
for(i=1;i<=n;i++)
cin>>a[i].x>>a[i].y;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j)
mp[i][j]=inf;
else
mp[i][j]=sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+(a[i].y-a[j].y)*(a[i].y-a[j].y));
prim();
}
return 0;
}