#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 100 + 5;
const double EPS = 1e-9;
int N;
double z[MAX_N];
double d[MAX_N][MAX_N];
struct Point {
  double x, y;
  Point(double x_ = 0, double y_ = 0) : x(x_), y(y_) {}
  inline double norm() const { return sqrt(x * x + y * y); }
  inline Point operator+(const Point &b) const {
    return Point(x + b.x, y + b.y);
  }
  inline Point operator-(const Point &b) const {
    return Point(x - b.x, y - b.y);
  }
  inline Point operator*(double b) const { return Point(x * b, y * b); }
  inline double operator*(const Point &b) const { return x * b.y - b.x * y; }
  inline double operator%(const Point &b) const { return x * b.x + y * b.y; }
} a[MAX_N];
int find_point(const Point &p) {
  for (int i = 1; i <= N; i++) {
    if (a[i].x == p.x && a[i].y == p.y) {
      return i;
    }
  }
  return 0;
}
Point get_center(int i, int j, int k) {
  double r = (a[j].x - a[i].x) * 2;
  double s = (a[j].y - a[i].y) * 2;
  double t = z[j] - z[i];
  double u = (a[k].x - a[i].x) * 2;
  double v = (a[k].y - a[i].y) * 2;
  double w = z[k] - z[i];
  double o = r * v - s * u;
  double p = t * v - s * w;
  double q = r * w - t * u;
  return Point(p / o, q / o);
}
int main() {
  scanf("%d", &N);
  for (int i = 1; i <= N; i++) {
    scanf("%lf%lf", &a[i].x, &a[i].y);
    z[i] = a[i] % a[i];
    for (int j = 1; j < i; j++) {
      d[j][i] = d[i][j] = (a[i] - a[j]).norm();
    }
  }
  double ans = -1;
  for (int i = 1; i <= N; i++) {
    for (int j = i + 1; j <= N; j++) {
      for (int k = j + 1; k <= N; k++) {
        double s = abs((a[i] - a[k]) * (a[j] - a[k]));
        if (s < EPS) continue;
        double r = d[i][j] * d[i][k] * d[j][k] / s * 0.5;
        if (r < ans) continue;
        double c1 = (a[j] - a[i]) % (a[k] - a[i]);
        double c2 = (a[k] - a[j]) % (a[i] - a[j]);
        double c3 = (a[i] - a[k]) % (a[j] - a[k]);
        if (c1 < 0 || c2 < 0 || c3 < 0) continue;
        if (c1 == 0 && !find_point(a[j] + a[k] - a[i])) continue;
        if (c2 == 0 && !find_point(a[k] + a[i] - a[j])) continue;
        if (c3 == 0 && !find_point(a[i] + a[j] - a[k])) continue;
        Point o = get_center(i, j, k);
        int ok = 1;
        for (int l = 1; l <= N; l++) {
          if ((a[l] - o).norm() < r - EPS) {
            ok = 0;
          }
        }
        if (ok) ans = max(ans, r);
      }
    }
  }
  if (ans < 0) {
    printf("-1\n");
  } else {
    printf("%.6lf\n", ans);
  }
  return 0;
}
