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

int n, m;
struct pnt
{ int x, y; } a[ 128 ];

/*ifstream fin( "atom.in" );
ofstream fout( "atom.out" );*/

void init( )
{	int i;
 	scanf( "%d", &n );
	for ( i=1; i<=n; i++ )
		scanf( "%d %d", &a[ i ].x, &a[ i ].y );
	a[ n+1 ] = a[ 1 ];
	a[ 0 ] = a[ n ];
}

double dist2( double px, double py, double qx, double qy ) //dist^2
{ return ( (px - qx)*(px - qx) + (py - qy)*(py - qy) ); }

double dist( struct pnt p, struct pnt q ) //dist^2
{ return ( (p.x - q.x)*(p.x - q.x) + (p.y - q.y)*(p.y - q.y) ); }

int angle( struct pnt p0, struct pnt p1, struct pnt p2 )
{	int dx1 = p1.x - p0.x; int dx2 = p2.x - p0.x;
	int dy1 = p1.y - p0.y; int dy2 = p2.y - p0.y;
	return ( dx1*dy2 - dx2*dy1 );
}

int cmp( const void*a1, const void* b )
{ 	struct pnt p = *((struct pnt*)a1);
 	struct pnt q = *((struct pnt*)b);
	if ( angle( a[ 1 ], p, q ) != 0 )
	  return (-angle( a[ 1 ], p, q ));
   return (int)dist( a[ 1 ], p ) - (int)dist( a[ 1 ], q );
}

void	hull( )
{	int i, mini;
	struct pnt p;
	for ( mini = i = 1; i<=n; i++ )
		if ( a[ i ].y < a[ mini ].y )	mini = i;
		else if ( a[ i ].y == a[ mini ].y && a[ i ].x < a[ mini ].x )
 		  mini = i;
	p = a[ mini ]; a[ mini ] = a[ 1 ]; a[ 1 ] = p;
	qsort( a+1, n, sizeof( struct pnt ), cmp );
	for( m=2, i=3; i<=n; i++ )
	{	while ( angle( a[ i ], a[ m ], a[ m-1 ] ) > 0 ) m--;
		++m; p = a[ i ]; a[ i ] = a[ m ]; a[ m ] = p;
	}
}

double mx[ 8 ] = { 1.0, 1.0, 1.0, 0, 0, -1.0, -1.0, -1.0 };
double my[ 8 ] = { 1.0, -1.0, 0.0, 1.0, -1.0, 1.0, 0.0, -1.0 };

double abs2( double t )
{ return t < (-0.00000001) ? (-t) : t; }

int inside( double x, double y )
{	int i; double angle=0.0;
 	double d1, d2, d3;
	double P = (2.0)*acos(-1.0);
	for ( i=1; i<=m; i++ )
	{ 	d1 = dist2( (double)a[ i ].x, (double)a[ i ].y, x, y );
		d2 = dist2( (double)a[ i+1 ].x, (double)a[ i+1 ].y, x, y );
		d3 = dist2( (double)a[ i ].x, (double)a[ i ].y,(double)a[ i+1 ].x, (double)a[ i+1 ].y );

		if ( d1 > 0.000000 && d2 > 0.00000 )
			angle += acos( ( d3 - (d2 + d1) ) / ( (-2.0)*sqrt(d1)*sqrt(d2) ) );
	}

	if (  angle > 0.00000 && abs2( angle - P ) < 0.0000001 )
		return 1;
   return 0;
}

double mindist( double nx, double ny )
{	double res = 999999.0; int i;
	for ( i=1; i<=n; i++ )
		if ( dist2( nx, ny, (double)a[ i ].x, (double)a[ i ].y ) < res )
		  res = dist2( nx, ny, (double)a[ i ].x, (double)a[ i ].y );
	return res;
}

void	solve( )
{	double prec = 16384.00;
	double x = a[ m+1 ].x;
	double y = a[ m+1 ].y;
	double nx, ny;
	double ans = -99.0, t;
	 int p, p1;

	if ( m == n )
   { x = a[ 2 ].x; y = a[ 2 ].y; }
	for ( p1=1; p1<=17; p1++ )
	{	prec = 16384.00;
		while ( prec > 0.01 )
		{ 	for ( p=0; p<8; p++ )
			{ 	nx = x + ( prec*mx[ p ] );
				ny = y + ( prec*my[ p ] );	
				if ( inside( nx, ny ) && ( t=mindist( nx, ny ) ) > ans )	
				{  x = nx; y = ny;
					ans = t;
				}
			}
			prec /= 2.0;
		}
	}
	ans = sqrt( ans );
	printf( "%.2f\n", ans );
	printf( "%.2f %.2f\n", x, y );
}

int main()
{	init( );
	hull( );
	solve( );

	return 0;
}
