#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <limits>
using namespace std;
int fa[1010];
int find(int x)
{
if(fa[x]==x)return x;
return fa[x]=find(fa[x]);
}
typedef struct node{//点
float x;
float y;
// float len;
}N;
typedef struct edge{//边
int a,b;
float len=0;
}E;
N no[110];
bool cmp(E e1,E e2)
{
return e1.len<e2.len;
}
int main() {
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>no[i].x>>no[i].y;
}
for(int i=1;i<=n;i++)fa[i]=i;
int len=0;
int s =n*(n+1)/2+1;
E e[s];
for(int i=1;i<n;i++)
{
for(int j=i+1;j<=n;j++)
{
e[len].a = i;
e[len].b = j;
float lenth = (no[i].x-no[j].x)*(no[i].x-no[j].x)+(no[i].y-no[j].y)*(no[i].y-no[j].y);
e[len].len = sqrt(lenth);//求边的长度
len++;
}
}
sort(e,e+len,cmp);
int cnt=0;
float ans=0;
for(int i=0;i<len;i++)
{
int f1 = find(e[i].a);
int f2 = find(e[i].b);
if(f1!=f2)
{
fa[f1] = f2;
// cout<<e[i].len<<endl;
ans +=e[i].len;
}
if(cnt==n-1)break;
}
printf("%.2lf",ans);
}