/*
TASK:atom
LANG:C++
*/
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define maxn 101

struct point
{ double x,y;
  void operator = (const point &x1)
  { x=x1.x;
    y=x1.y;
  }
};

point a[maxn],b[maxn],c[maxn],o,ans;
long n,bc;
double r=0;

void inp(void)
{ long i;
  scanf("%ld",&n);
  for (i=0;i<n;i++) scanf("%lf%lf",&a[i].x,&a[i].y);
}
double s(point a,point b,point c)
{ return a.x*b.y+b.x*c.y+c.x*a.y-b.y*c.x-a.y*b.x-a.x*c.y;
}
int cmp1(const void *a, const void *b)
{ point *p=(point *)a;
  point *q=(point *)b;
  double s1=s(o,*p,*q);
  if (s1>0) return -1;
  if (s1<0) return 1;
  if (p->y<q->y) return -1;
  if (p->y>q->y) return 1;
  if (p->x<q->x) return -1;
  if (p->x>q->x) return 1;
  return 0;
}
void convex(void)
{ long i;
  o=a[0];
  for (i=1;i<n;i++)
  if (a[i].y<o.y || (a[i].y==o.y && a[i].x>o.x))
  { c[i]=o;
    o=a[i];
  }
  else c[i]=a[i];
  c[0]=c[n-1];
  qsort(c,n-1,sizeof(point),cmp1);
  b[0]=o;
  b[1]=c[0];
  bc=2;
  i=1;
  while (i<n-1)
  { while (bc>1 && s(b[bc-2],b[bc-1],c[i])<=0) bc--;
    b[bc++]=c[i];
    i++;
  }
}
void show(point* a,long ac)
{ long i;
  for (i=0;i<ac;i++) printf("%lf %lf\n",a[i].x,a[i].y);
}
int isinner(point p)
{ long i,u=bc-1;
  for (i=0;i<u;i++) if (s(p,b[i],b[i+1])<0.0) return 0;
  if (s(p,b[bc-1],b[0])<0) return 0;
  return 1;
}
double d(point a, point b)
{ return (b.x-a.x)*(b.x-a.x)+(b.y-a.y)*(b.y-a.y);
}
double findmind(point p)
{ long i;
  double mind=1000000000.1,dd;
  for (i=0;i<n;i++)
  { dd=d(a[i],p);
    if (mind>dd) mind=dd;
  }
  return mind;
}
double k3(point p1,point p2)
{ return -((p1.x-p2.x)/(p1.y-p2.y));
}
double b3(point p1,point p2)
{ return (p1.y+p2.y)/2-k3(p1,p2)*(p1.x+p2.x)/2;
}
void find(void)
{ long i,j,k;
  double bb3,kk3,bb4,kk4,mind;
  point cp,p1,p2,p3,pp1,pp2,pp3,pp4;
  for (i=0;i<n;i++)
  for (j=i+1;j<n;j++)
  for (k=j+1;k<n;k++)
  { p1=a[i];p2=a[j];p3=a[k];
    if (s(p1,p2,p3)<(double)0.0001) continue;
    pp1=p1;
    pp2=p2;
    pp3=p3;
    pp4=p1;
    if (p1.y==p2.y) pp1=p3;
    if (p3.y==p2.y) pp4=p2;
    kk3=k3(pp1,pp2);
    bb3=b3(pp1,pp2);
    kk4=k3(pp3,pp4);
    bb4=b3(pp3,pp4);
    cp.x=(bb4-bb3)/(kk3-kk4);
    cp.y=kk3*cp.x+bb3;
    if (isinner(cp))
    { mind=findmind(cp);
      if (mind>r)
      { ans=cp;
        r=mind;
      }
    }
  }
}
int main(void)
{// freopen("inf.txt","r",stdin);
  inp();
  convex();
  find();
//  show(b,bc);
  printf("%.2lf\n%.2lf %.2lf\n",sqrt(r),ans.x,ans.y);
  return 0;
}

