#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
struct stu
{
int x;int y;int z;
};
void fun(stu *a,int left,int right)//先排好序
{
stu key=a[left];
int i=left,j=right;
while(i<j)
{
while(i<j&&a[j].z>=key.z)j--;
while(i<j&&a[i].z<key.z)i++;
if(i<j)
{
swap(a[i].x,a[j].x);
swap(a[i].y,a[j].y);
swap(a[i].z,a[j].z);
}
}
if(i==j)
{
swap(a[left].z,a[i].z);
swap(a[left].y,a[i].y);
swap(a[left].z,a[i].z);
}
if(i<right)
fun(a,i+1,right);
if(left<i)
fun(a,left,i-1);
}
void fun1(stu *a,int n)//计算总高度
{
double sum=0;
for(int i=0;i<n;i++)
{
double t=(a[i+1].x-a[i].x)*(a[i+1].x-a[i].x)+(a[i+1].y-a[i].y)*(a[i+1].y-a[i].y)+(a[i+1].z-a[i].z)*(a[i+1].z-a[i].z);
sum=sum+sqrt(t);
}
cout<<fixed<<setprecision(3)<<sum<<endl;
}
int main()
{
stu a[50000];
int n,j;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>a[i].x>>a[i].y>>a[i].z;
}
fun(a,0,n-1);
fun1(a,n-1);
return 0;
}