#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1);
double ans = -1;
struct point {
  double x, y;
} a[110];
int n, num = 0;
double q1[1100000], q2[1100000], q3[1100000];
bool p[110][110][110];
bool check(double x, double y) {
  for (int i = 1; i <= n; i++)
    if (fabs(a[i].x - x) < 1e-9 && fabs(a[i].y - y) < 1e-9) return 1;
  return 0;
}
double mul(point a, point b, point c) {
  return (b.x - a.x) * (c.x - a.x) + (b.y - a.y) * (c.y - a.y);
}
double sqr(double x) { return x * x; }
double dis(point a, point b) { return sqrt(sqr(a.x - b.x) + sqr(a.y - b.y)); }
void work(point a, point b, double &k, double &B) {
  k = (b.y - a.y) / (b.x - a.x);
  k = -1 / k;
  B = (a.y + b.y) / 2 - (a.x + b.x) / 2 * k;
}
void cal(point a, point b, point c) {
  if (mul(a, b, c) < 1e-9 || mul(b, a, c) < 1e-9 || mul(c, a, b) < 1e-9) return;
  double k1, b1, k2, b2;
  work(a, b, k1, b1);
  work(b, c, k2, b2);
  double x = (b2 - b1) / (k1 - k2);
  ++num;
  q1[num] = x;
  q2[num] = x * k1 + b1;
  q3[num] = max(max(dis(a, b) / 2, dis(b, c) / 2), dis(a, c) / 2);
}
point turn(point a, double ang) {
  point b;
  b.x = a.x * cos(ang) + a.y * sin(ang);
  b.y = -a.x * sin(ang) + a.y * cos(ang);
  return b;
}
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    cin >> a[i].x >> a[i].y;
    a[i] = turn(a[i], 0.1);
  }
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if (i != j)
        for (int k = 1; k <= n; k++)
          if (k != i && k != j) {
            if (!p[i][j][k]) cal(a[i], a[j], a[k]);
            p[i][j][k] = p[i][k][j] = p[j][i][k] = p[j][k][i] = p[k][i][j] =
                p[k][j][i] = 1;
            if (fabs(mul(a[i], a[j], a[k])) < 1e-9 &&
                check(a[j].x + a[k].x - a[i].x, a[j].y + a[k].y - a[i].y)) {
              num++;
              q1[num] = (double)(a[j].x + a[k].x) / 2;
              q2[num] = (double)(a[j].y + a[k].y) / 2;
              q3[num] = max(dis(a[i], a[j]) / 2, dis(a[i], a[k]) / 2);
            }
          }
  if (num == 0)
    printf("-1\n");
  else {
    double ans = -1;
    for (int i = 1; i <= num; i++) {
      double t = 1000000000;
      for (int j = 1; j <= n; j++) t = min(t, dis(a[j], (point){q1[i], q2[i]}));
      if (t > q3[i]) ans = max(ans, t);
    }
    if (ans > 0)
      printf("%.6lf\n", ans);
    else
      printf("-1\n");
  }
  return 0;
}
