#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
int sig(double x) { return (x > eps) - (x < -eps); }
struct Point {
  double x, y, r;
  Point(double x1 = 0, double y1 = 0) : x(x1), y(y1), r(0) {}
  double operator^(const Point& a) const { return x * a.y - y * a.x; }
  Point operator-(const Point& a) const { return Point(x - a.x, y - a.y); }
};
double dis(Point a, Point b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
Point center(Point p[3]) {
  double x1, x2, x3, y1, y2, y3;
  Point q;
  x1 = p[0].x;
  x2 = p[1].x;
  x3 = p[2].x;
  y1 = p[0].y;
  y2 = p[1].y;
  y3 = p[2].y;
  q.x = ((y2 - y1) * (y3 * y3 - y1 * y1 + x3 * x3 - x1 * x1) -
         (y3 - y1) * (y2 * y2 - y1 * y1 + x2 * x2 - x1 * x1)) /
        (2 * (x3 - x1) * (y2 - y1) - 2 * ((x2 - x1) * (y3 - y1)));
  q.y = ((x2 - x1) * (x3 * x3 - x1 * x1 + y3 * y3 - y1 * y1) -
         (x3 - x1) * (x2 * x2 - x1 * x1 + y2 * y2 - y1 * y1)) /
        (2 * (y3 - y1) * (x2 - x1) - 2 * ((y2 - y1) * (x3 - x1)));
  q.r = dis(q, p[0]);
  return q;
}
int In(Point c, Point p[]) {
  double x[6];
  int t = 0;
  for (int i = 0; i < 3; i++) {
    int j = (i + 1) % 3, k = (i + 2) % 3;
    x[t++] = (p[i] - c) ^ (p[j] - c);
    x[t++] = (p[i] - c) ^ (p[k] - c);
  }
  t = 1;
  for (int i = 0; i < 3; i++) {
    if (sig(x[i * 2]) == 0 || sig(x[i * 2 + 1]) == 0) {
      t = 0;
      break;
    }
    if (sig(x[i * 2]) > 0 && sig(x[i * 2 + 1]) > 0) {
      t = -1;
      break;
    }
  }
  return t;
}
Point p[120];
bool judge(Point c, Point q[]) {
  double a = dis(c, q[0]), b = dis(c, q[1]), d = dis(c, q[2]);
  if (sig(a - b) < 0) {
    double g = b;
    b = a;
    a = g;
  }
  if (sig(a - d) < 0) {
    double g = d;
    d = a;
    a = g;
  }
  if (sig(a * a - b * b - d * d) == 0)
    return true;
  else
    return false;
}
double solve(int n) {
  Point q[3];
  double ans = -1;
  for (int i = 0; i < n - 2; i++)
    for (int j = i + 1; j < n - 1; j++)
      for (int k = j + 1; k < n; k++) {
        if (sig((p[j] - p[i]) ^ (p[k] - p[i])) == 0) continue;
        q[0] = p[i], q[1] = p[j], q[2] = p[k];
        Point c = center(q);
        int f = In(c, q);
        if (f == -1) continue;
        bool flag = false;
        int ff = 0;
        for (int t = 0; t < n; t++) {
          if (t == i || t == j || t == k) continue;
          double d = dis(c, p[t]);
          if (sig(d - c.r) < 0) {
            flag = true;
            break;
          }
          if (sig(d - c.r) == 0) {
            if (judge(p[t], q)) ff = 1;
          }
        }
        if (!flag && sig(c.r - ans) > 0) {
          if (f == 1)
            ans = c.r;
          else if (f == 0 && ff == 1)
            ans = c.r;
        }
      }
  return ans;
}
int main() {
  int n;
  while (scanf("%d", &n) != EOF) {
    for (int i = 0; i < n; i++) scanf("%lf%lf", &p[i].x, &p[i].y);
    double ans = solve(n);
    if (sig(ans) < 0)
      printf("-1\n");
    else
      printf("%.6lf\n", ans);
  }
  return 0;
}
