#include <stdio.h>
#include <string.h>
#include <math.h>
#define MAX 200
int n;
int p[MAX], ans[MAX], used[MAX];
float x[MAX], y[MAX], min;
float cal( float x1, float y1, float x2, float y2 )
{
return sqrt( pow(x1-x2, 2) + pow(y1-y2, 2) ) + 16;
}
void dfs( int val, int cur )
{
int i;
float sum = 0;
if( cur == n )
{
for( i = 0; i < n-1; i++ )
sum += cal( x[ p[i] ], y[ p[i] ], x[ p[i+1] ], y[ p[i+1] ] );
if( sum < min )
{
min = sum;
for( i = 0; i < n; i++ )
ans[i] = p[i];
}
}
else
{
used[val] = 1;
for( i = 0; i < n; i++ )
if( !used[i] )
{
p[cur] = i;
dfs( i, cur+1 );
}
used[val] = 0;
}
}
int main()
{
int cout = 1, i;
while( scanf( "%d", &n ) && n )
{
min = 100000;
printf( "**********************************************************\n" );
printf( "Network #%d\n", cout++ );
for( i = 0; i < n; i++ )
scanf( "%f%f", &x[i], &y[i] );
for( i = 0; i < n; i++ )
{
memset( used, 0, sizeof(used) );
p[0] = i;
dfs( i, 1 );
}
for( i = 0; i < n-1; i++ )
printf( "Cable requirement to connect (%d,%d) to (%d,%d) is %.2f feet.\n", (int)x[ans[i]], (int)y[ans[i]], (int)x[ans[i+1]], (int)y[ans[i+1]], cal(x[ans[i]], y[ans[i]], x[ans[i+1]], y[ans[i+1]]) );
printf( "Number of feet of cable required is %.2f.\n", min );
}
return 0;
}