#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-8;
struct Point {
  double x, y;
  Point(){};
  Point(double a, double b) {
    x = a;
    y = b;
  }
} A[105];
struct Point2 {
  int x, y;
} B[105];
struct Line {
  double a, b, c;
  Line(){};
  Line(double x, double y, double z) {
    a = x;
    b = y;
    c = z;
  }
};
int N;
double sqr(double x) { return x * x; }
Line Getline(Point A, Point B) {
  double a = A.x - B.x, b = A.y - B.y;
  Point P = Point((A.x + B.x) / 2.0, (A.y + B.y) / 2.0);
  double c = P.x * a + P.y * b;
  return Line(a, b, c);
}
double dis(Point A, Point B) { return sqr(A.x - B.x) + sqr(A.y - B.y); }
Point cross(Line a, Line b) {
  double x = (a.c * b.b - a.b * b.c) / (a.a * b.b - a.b * b.a);
  double y = (a.c * b.a - a.a * b.c) / (a.b * b.a - a.a * b.b);
  return Point(x, y);
}
int dbl(double a, double b) {
  double x = b - eps;
  double y = b + eps;
  if ((a >= x) && (a <= y)) return 0;
  if (a < x) return -1;
  return 1;
}
bool check(Point P, double len) {
  for (int i = 1; i <= N; i++)
    if (dbl(dis(A[i], P), len) < 0) return false;
  return true;
}
int main() {
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) {
    int x, y;
    scanf("%d%d", &B[i].x, &B[i].y);
    A[i] = Point(B[i].x, B[i].y);
  }
  double Ans = -1;
  for (int i = 1; i <= N; i++)
    for (int j = i + 1; j <= N; j++)
      if (dbl(A[i].x, A[j].x) == 0)
        for (int k = 1; k <= N; k++)
          if ((i != k) && (B[i].y == B[k].y))
            for (int p = 1; p <= N; p++)
              if ((p != j) && (B[p].y == B[j].y)) {
                Point q =
                    Point((A[i].x + A[k].x) / 2.0, (A[i].y + A[j].y) / 2.0);
                double tmp = dis(q, A[i]);
                if (check(q, tmp)) Ans = max(Ans, tmp);
              }
  for (int i = 1; i <= N; i++)
    for (int j = i + 1; j <= N; j++)
      for (int k = j + 1; k <= N; k++) {
        double tmp1 = dis(A[i], A[j]);
        double tmp2 = dis(A[j], A[k]);
        double tmp3 = dis(A[i], A[k]);
        if (dbl(2 * max(tmp1, max(tmp2, tmp3)), tmp1 + tmp2 + tmp3) < 0) {
          Point p = cross(Getline(A[i], A[j]), Getline(A[j], A[k]));
          double tmp4 = dis(p, A[i]);
          if (check(p, tmp4)) Ans = max(Ans, tmp4);
        }
      }
  if (Ans < 0)
    cout << -1 << endl;
  else
    printf("%.11lf\n", sqrt(Ans));
  return 0;
}
