#include<bits/stdc++.h>
using namespace std;
const int N=5005;
bool vis[N];
int n;
struct nod{
double x,y;
};
struct nod2{
int x,y;
double w;
friend bool operator < (nod2 a,nod2 b){
return a.w>b.w;
}
};
nod city[N];
double dis(nod a,nod b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++){
cin>>city[i].x>>city[i].y;
}
priority_queue<nod2> q;
double ans=0;int gs=-1;
q.push({1,1,0});
while(!q.empty()){
auto now=q.top();q.pop();
if(vis[now.y])continue;
vis[now.y]=1;
ans+=now.w;
gs++;
for(int i=1;i<=n;i++){
if(i==now.x||vis[i])continue;
q.push({now.y,i,dis(city[now.y],city[i])});
}
}
printf("%.2lf",ans);
return 0;
}