#include<bits/stdc++.h>
//using namespace std;
//#define double long double
//int n;
//struct node{
// double x,y,u;
//}e[2500000];
//int m=0;
//double x[5001],y[5001];
//int fa[5001];
//double len(double x1,double y1,double x2,double y2){
// return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
//}
//bool cmp(node a,node b){
// return a.u<b.u;
//}
//int find(int a){
// if(fa[a]==a) return a;
// else return fa[a]=find(fa[a]);
//}
//bool merge(int a,int b){
// int t1=find(a);
// int t2=find(b);
// if(a!=b){
// fa[a]=b;
// return true;
// }
// return false;
//}
//int main(){
// //1、声明变量,输入
// cin>>n;
// for(int i=1;i<=n;i++){
// fa[i]=i;
// }
// for(int i=1;i<=n;i++){
// cin>>x[i]>>y[i];
// }
// for(int i=1;i<=n;i++){
// double uy,minn=0x3f3f3f3f;
// for(int j=i+1;j<=n;j++){
// if(len(x[i],y[i],x[j],y[j])<minn){
// minn=len(x[i],y[i],x[j],y[j]);
// uy=j;
// }
// }
// e[++m].x=i;
// e[m].y=uy;
// e[m].u=minn;
// }
// //2、计算过程
// sort(e+1,e+1+m,cmp);
// int cnt=0;
// double ans=0;
// for(int i=1;i<=m;i++){
// if(merge(int(e[i].x),int(e[i].y))){
// cnt++;
// ans+=e[i].u;
// }
// if(cnt==n-1){
// cout<<fixed<<setprecision(2)<<ans;
// break;
// }
// }
// //3、输出
//
// return 0;
//}