#include<stdio.h>
#include<string.h>
#include<math.h>
typedef struct{
  int x;
  int y;
}cdnt;

const double PI=atan(1.0)*4;

int main(void){
  cdnt p[400],pre,save;
  short flg[400];
  int n,i,j,inner,outer,det;
  double mtheta,theta,mr,r,sum;
  while(scanf("%d",&n) && n){
    memset(flg,0,sizeof(flg));
    sum=0;
    pre.x=0;
    pre.y=1;
    for(i=0;i<n;i++) scanf("%d %d",&p[i].x,&p[i].y);
    for(i=0;i<n;i++){
      //printf("i:%d\n",i);
      mtheta=10;
      mr=4096;
      det=0;
      //printf("pre:(%d %d)\n",pre.x,pre.y);
      for(j=0;j<n;j++){
	if(!flg[j]){
	  inner=pre.x*p[j].x+pre.y*p[j].y;
	  outer=pre.y*p[j].x-pre.x*p[j].y;
	  //printf("%d in:%d,out:%d\t",j,inner,outer);
	  theta=atan2(outer,inner);
	  r=hypot(p[j].x,p[j].y);
	  //printf("%d (%d %d),theta:%f,r:%f\t",j,p[j].x,p[j].y,theta,r);
	  //if(theta<0) theta=2*PI-theta;
	  if(theta<mtheta || (theta==mtheta && mr>r)){
	    mtheta=theta;
	    mr=r;
	    det=j;
	  }
	}
	//puts("ok");
      }
      //puts("complete");
      //printf("det:%d\n",det);
      flg[det]=1;
      pre.x=p[det].x;
      pre.y=p[det].y;
      for(j=0;j<n;j++){
	p[j].x-=pre.x;
	p[j].y-=pre.y;
      }
      sum+=mr;
    }
    printf("%.1f\n",sum);
  }
  return 0;
}