import java.util.*;
public class Main {
static final int N = 100010;
static final double eps = 1e-8;
static Point[] p = new Point[N];
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for (int i = 1; i <= n; i++) {
double x = sc.nextDouble(), y = sc.nextDouble();
p[i] = new Point(x, y);
}
Random random = new Random();
for (int i = 1; i <= n; i++) {
int j = random.nextInt(n + 1);
if (j == 0) {
i --;
continue;
}
Point temp = p[j];
p[j] = p[i];
p[i] = temp;
}
Point o = p[1];
double r = 0;
for (int i = 1; i <= n; i++) {
if (sgn(getDis(o, p[i]) - r) > 0) {
o = p[i];
r = 0;
for (int j = 1; j < i; j++) {
if (sgn(getDis(o, p[j]) - r) > 0) {
o = new Point((p[i].x + p[j].x) / 2, (p[i].y + p[j].y) / 2);
r = getDis(o, p[j]);
for (int k = 1; k < j; k++) {
if (sgn(getDis(o, p[k]) - r) > 0) {
o = getCirCenter(p[i], p[j], p[k]);
r = getDis(o, p[k]);
}
}
}
}
}
}
System.out.printf("%.6f %.6f\n", o.x, o.y);
System.out.printf("%.6f\n", r);
}
static Point getCirCenter(Point a, Point b, Point c) {
double a1 = b.x - a.x, b1 = b.y - a.y, c1 = (a1 * a1 + b1 * b1) / 2;
double a2 = c.x - a.x, b2 = c.y - a.y, c2 = (a2 * a2 + b2 * b2) / 2;
double d = a1 * b2 - a2 * b1;
double x = a.x + (c1 * b2 - c2 * b1) / d;
double y = a.y + (a1 * c2 - a2 * c1) / d;
return new Point(x, y);
}
static double getDis(Point a, Point b) {
double t1 = a.x - b.x, t2 = a.y - b.y;
return Math.sqrt(t1 * t1 + t2 * t2);
}
static int sgn(double x) {
if (Math.abs(x) < eps) return 0;
else return x > 0 ? 1 : -1;
}
}
class Point {
double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
}