/*
TASK:atom
LANG:C++
*/
#include <stdio.h>
#include <math.h>
#define min(a,b) (a < b ? a : b)
#define max(a,b) (a > b ? a : b)
#define FOR(i,n) for(int i=0;i<n;i++)
#define maxn 128

struct type {
       double x,y;
       type() {}
       type(double _x,double _y) {
                   x = _x;
                   y = _y;
       }
} a[maxn];
int n;
double bx,by;

double dist(type a,type b) {
       return sqrt( (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y) );
}
double getMaxDist(type x) {
       double ans = dist(a[0],x);
       FOR(i,n) ans = min(ans,dist(a[i],x));
       return ans;
}
int main() {
    scanf("%d",&n);
    FOR(i,n) scanf("%lf %lf",&a[i].x,&a[i].y);
    double midx,midy;
    FOR(i,n) { midx += a[i].x; midy+=a[i].y; }
    double cans = getMaxDist(type(midx/(double)n,midy/(double)n));
    bx = midx/(double)n, by = midy/(double)n;
    FOR(i,n)
       for(int j=i+1;j<n;j++) {
               midx = a[i].x + a[j].x;
               midy = a[i].y + a[j].y;
               midx/= (double)2;
               midy/= (double)2;
               double cd = getMaxDist(type(midx,midy));
               if(cans < cd) {
                       bx = midx,by = midy;
                       cans = cd;
               }
       }
    printf("%.2lf\n",cans);
    printf("%.2lf %.2lf\n",bx,by);
    scanf("%d",&n);
    return 0;
}
