type
int=longint;
dt=double;
point=record
x,y:dt;
end;
var
i,j,k,n,m,x,y:int;
a:array[1..1100000]of point;
c,tmp:point;
r:dt;
function dis(a,b:point):dt;
begin
dis:=sqr(a.x-b.x)+sqr(a.y-b.y);
end;
function get(p0,p1,p2:point):point;
var a1,a2,b2,c2,b1,c1:dt;d:dt;
begin
a1:=(p1.x-p0.x)*2;a2:=(p2.x-p0.x)*2;
b1:=(p1.y-p0.y)*2;b2:=(p2.y-p0.y)*2;
c1:=(p1.x*p1.x+p1.y*p1.y-p0.x*p0.x-p0.y*p0.y);
c2:=(p2.x*p2.x+p2.y*p2.y-p0.x*p0.x-p0.y*p0.y);
d:=a2*b1-a1*b2;
get.x:=(c2*b1-c1*b2)/d;
get.y:=(a2*c1-a1*c2)/d;
end;
begin
randomize;
readln(n);
for i:=1 to n do read(a[i].x,a[i].y);
for i:=1 to n do
begin
x:=random(n)+1;
y:=random(n)+1;
tmp:=a[x];a[x]:=a[y];a[y]:=tmp;
end;
c.x:=(a[1].x+a[2].x)/2;
c.y:=(a[1].y+a[2].y)/2;r:=dis(c,a[1]);
for i:=3 to n do
if (dis(a[i],c)>r) then
begin
c.x:=(a[1].x+a[i].x)/2;
c.y:=(a[1].y+a[i].y)/2;
r:=dis(c,a[1]);
for j:=i-1 downto 1 do //这里
if (dis(a[j],c)>r) then
begin
c.x:=(a[i].x+a[j].x)/2;c.y:=(a[i].y+a[j].y)/2;
r:=dis(c,a[j]);
for k:=j-1 downto 1 do //和这里改为顺序枚举就A了
if (dis(a[k],c)>r) then
begin
c:=get(a[i],a[j],a[k]);
r:=dis(c,a[k]);
end;
end;
end;
writeln(c.x:0:2,' ',c.y:0:2,' ',sqrt(r):0:2);
close(input);close(output);
end.