#include<stdio.h>
#include<math.h>
struct Point{
int x;
int y;
int z;
};
void cmp(struct Point point[],int n);
float cp(struct Point a[],int n);
int main(){
int n=0,i=0;
struct Point point[50000];
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d %d %d",&point[i].x,&point[i].y,&point[i].z);
}
cmp(point,n);
for(i=0;i<n;i++){
printf("%d %d %d\n",point[i].x,point[i].y,point[i].z);
}
printf("%.3f",cp(point,n));
return 0;
}
void cmp(struct Point point[],int n){
int i=0,k=0;
struct Point temp;
for(i=0;i<n-1;i++){
for(k=0;k<n-i-1;k++){
if(point[k].z>point[k+1].z){
temp=point[k];
point[k]=point[k+1];
point[k+1]=temp;
}
}
}
}
float cp(struct Point *a,int n){
int i=0;
float sum=0;
for(i=0;i<n-1;i++){
a[i].x=a[i+1].x-a[i].x;
a[i].x=a[i].x*a[i].x;
a[i].y=a[i+1].y-a[i].y;
a[i].y=a[i].y*a[i].y;
a[i].z=a[i+1].z-a[i].z;
a[i].z=a[i].z*a[i].z;
sum+=sqrt(a[i].x+a[i].y+a[i].z);
}
return sum;
}