#include <bits/stdc++.h>
using namespace std;
struct vect {
  double x, y;
  vect() {}
  vect(double x, double y) : x(x), y(y) {}
  vect operator+(const vect &a) const { return vect(x + a.x, y + a.y); }
  vect operator-(const vect &a) const { return vect(x - a.x, y - a.y); }
  vect operator*(double a) const { return vect(x * a, y * a); }
  vect operator/(double a) const { return vect(x / a, y / a); }
  double operator*(const vect &a) const { return x * a.y - y * a.x; }
  vect r9() const { return vect(-y, x); }
  double len() const { return x * x + y * y; }
  bool operator!=(const vect &a) const { return x != a.x || y != a.y; }
} inv(8593.5396, 541.88);
struct line {
  vect a, b;
  line() {}
  line(vect a, vect b) : a(a), b(b) {}
};
bool inl(const line &a, const vect &b) {
  return (a.a - b).len() + (a.b - b).len() - 1e-9 < (a.b - a.a).len();
}
vect intersect(const line &a, const line &b, bool chk = 1) {
  if (fabs((a.b - a.a) * (b.b - b.a)) < 1e-9) return inv;
  double y = (a.a * a.b * (b.b.y - b.a.y) - b.a * b.b * (a.b.y - a.a.y)) /
             ((a.a - a.b) * (b.b - b.a));
  double x = (a.a * a.b * (b.b.x - b.a.x) - b.a * b.b * (a.b.x - a.a.x)) /
             ((a.a - a.b) * (b.b - b.a));
  vect ret(x, y);
  if (chk && (!inl(a, ret) || !inl(b, ret))) return inv;
  return ret;
}
vect mid(const vect &a, const vect &b) { return (a + b) / 2; }
line bisect(const vect &a, const vect &b) {
  vect m = mid(a, b);
  return line(m, m + (a - b).r9());
}
double toleft(const vect &a, const vect &b, const vect &c) {
  return (b - a) * (c - b) + (c - b) * (a - c) + (a - c) * (b - a);
}
vect ps[111];
int n;
vect center(const vect &a, const vect &b, const vect &c) {
  vect t = intersect(bisect(a, b), bisect(b, c), 0);
  if (!(t != inv)) return inv;
  double tm = toleft(t, a, b);
  if (toleft(t, b, c) * tm - 1e-10 < 0) return inv;
  if (toleft(t, c, a) * tm - 1e-10 < 0) return inv;
  return t;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%lf%lf", &ps[i].x, &ps[i].y);
  double ans = -1;
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++)
      for (int k = j + 1; k < n; k++) {
        vect t = center(ps[i], ps[j], ps[k]);
        if (t != inv) {
          double len = (t - ps[i]).len();
          int flg = 1;
          for (int l = 0; l < n && flg; l++)
            if (l != i && l != j && l != k)
              if ((t - ps[l]).len() < len) flg = 0;
          if (flg) ans = max(ans, len);
        }
      }
  for (int i = 0; i < n; i++)
    for (int j = i + 1; j < n; j++)
      for (int k = j + 1; k < n; k++)
        for (int l = k + 1; l < n; l++)
          if (fabs((ps[i] - ps[l]).len() - (ps[j] - ps[k]).len()) +
                  fabs((ps[i] - ps[j]).len() - (ps[k] - ps[l]).len()) +
                  fabs((ps[i] - ps[k]).len() - (ps[j] - ps[l]).len()) <
              1e-8) {
            vect t;
            if (fabs((ps[i] - ps[j]) * (ps[k] - ps[l])) > 1e-8)
              t = mid(ps[i], ps[j]);
            else if (fabs((ps[i] - ps[k]) * (ps[j] - ps[l])) > 1e-8)
              t = mid(ps[i], ps[k]);
            else
              t = mid(ps[i], ps[l]);
            double len = (ps[i] - t).len();
            int flg = 1;
            for (int m = 0; m < n && flg; m++)
              if (m != i && m != j && m != k && m != l)
                if ((t - ps[m]).len() < len) flg = 0;
            if (flg) ans = max(ans, len);
          }
  if (ans > 0)
    printf("%.7f", sqrt(ans));
  else
    printf("-1");
  return 0;
}
