#include<bits/stdc++.h>
using namespace std;
#define rep(a,b) for(int i=a;i<=b;i++)
#define red(a,b) for(int i=a;i>=b;i--)
#define ULL unsigned long long
#define LL long long
const double inf =10e-8;
double x[3],y[3];
double cal(double x,double y)
{
if(abs(x-y)<inf)return 0;
else
{
return (x-y);
}
}
void _()
{
printf("%.4lf %.4lf %.4lf",0.0,x[0],y[0]);
}
void __()
{
double x1=(x[0]+x[1])/2;
double y1=(y[0]+y[1])/2;
double d=(x1-x[0])*(x1-x[0])+(y1-y[0])*(y1-y[0]);
d=sqrt(d);
printf("%.4lf %.4lf %.4lf",d,x1,y1);
}
bool w(int i,int j)
{
if(cal(x[i],x[j])==0&&cal(y[i],y[j])==0)
return true;
else return false;
}
bool ____()
{
if(w(0,1)&&w(1,2)&&w(0,2))
{
printf("%.4lf %.4lf %.4lf",0.0,x[0],y[0]);
return true;
}
else if(w(0,1))
{
x[0]=x[2];
y[0]=y[2];
__();
return true;
}
else if(w(1,2))
{
x[0]=x[2];
y[0]=y[2];
__();
return true;
}
else if(w(0,2))
{
x[1]=x[2];
y[1]=y[2];
__();
return true;
}
return false;
}
bool check()
{
if(____())return true;
double k=100000000;
vector<double>v;
vector<int>X,Y;
for(int i=0;i<=1;i++)
for(int j=i+1;j<=2;j++)
{
v.push_back(sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j])));
X.push_back(i);
Y.push_back(j);
}
for(int i=0;i<=2;i++)
{
double H=v[(i+1)%3]*v[(i+1)%3]+v[(i+2)%3]*v[(i+2)%3]-v[i]*v[i];
H/=2*v[(i+1)%3]*v[(i+2)%3];
if(H<0)
{
double r=v[i]/2;
double x_=(x[X[i]]+x[Y[i]])/2;
double y_=(y[X[i]]+y[Y[i]])/2;
printf("%.4lf %.4lf %.4lf",r,x_,y_);
return true;
}
}
return false;
}
void ___()
{
double xr,yr,r;
double a1,a2,a3,a4,b1,b2,b3,b4;
double x1=x[0],x2=x[1],x3=x[2];
double y1=y[0],y2=y[1],y3=y[2];
if(check())return ;
a1=(x1+x2)/2,a2=(y1+y2)/2,a3=(y1-y2),a4=(x2-x1);
b1=(x2+x3)/2,b2=(y2+y3)/2,b3=(y2-y3),b4=(x3-x2);
double T=b1*b4-b2*b3-b4*a1+a2*b3;
T/=(a3*b4-b3*a4);
xr=T*a3+a1;
yr=T*a4+a2;
r=sqrt((xr-x1)*(xr-x1)+(yr-y1)*(yr-y1));
printf("%.4lf %.4lf %.4lf",r,xr,yr);
return ;
}
int main()
{
int n,cnt;
cin>>n;
rep(1,n)
cin>>x[i-1]>>y[i-1];
if(n==1)_();
else if(n==2)__();
else ___();
system("pause");
}