#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-7;
const int maxn = 100 + 10;
int n;
complex<double> p[maxn];
int sign(double x) {
  if (x < -eps) return -1;
  return x > eps;
}
double cross(complex<double> a, complex<double> b) {
  return (conj(a) * b).imag();
}
double dot(complex<double> a, complex<double> b) {
  return (conj(a) * b).real();
}
double scross(complex<double> a, complex<double> b) {
  return sign((conj(a) * b).imag());
}
double sdot(complex<double> a, complex<double> b) {
  return sign((conj(a) * b).real());
}
bool inside(complex<double> a, complex<double> b, complex<double> c,
            complex<double> d) {
  return scross(b - a, d - a) == scross(c - b, d - b) &&
         scross(b - a, d - a) == scross(a - c, d - c);
}
complex<double> rotate(complex<double> a, complex<double> b) {
  return (b - a) * complex<double>(0, 1) + a;
}
complex<double> crosspoint(complex<double> a, complex<double> b,
                           complex<double> c, complex<double> d) {
  c = (c - a) / (b - a);
  d = (d - a) / (b - a);
  double dx = c.real() - d.real();
  double dy = c.imag() - d.imag();
  double x = c.real() - (dx * c.imag()) / dy;
  return complex<double>(x, 0) * (b - a) + a;
}
complex<double> center(complex<double> a, complex<double> b,
                       complex<double> c) {
  complex<double> mab = (a + b) / 2.0;
  complex<double> mac = (a + c) / 2.0;
  complex<double> hab = rotate(mab, a);
  complex<double> hac = rotate(mac, a);
  return crosspoint(mab, hab, mac, hac);
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 0; i < n; ++i) {
    double t1, t2;
    cin >> t1 >> t2;
    p[i] = complex<double>(t1, t2);
  }
  double ans = -1;
  for (int i = 0; i < n; ++i)
    for (int j = 0; j < n; ++j)
      for (int k = 0; k < n; ++k) {
        if (scross(p[i] - p[j], p[i] - p[k]) == 0) continue;
        complex<double> cent = center(p[i], p[j], p[k]);
        if (!inside(p[i], p[j], p[k], cent)) {
          if (scross(p[k] - p[j], cent - p[j]) != 0) continue;
          bool bo = false;
          for (int i2 = 0; i2 < n; ++i2)
            if (i2 != i && i2 != j && i2 != k &&
                scross(p[i] - p[i2], cent - p[i2]) == 0) {
              bo = true;
              break;
            }
          if (!bo) continue;
        }
        bool bo2 = false;
        double r = abs(cent - p[i]);
        for (int i2 = 0; i2 < n; ++i2)
          if (i2 != i && i2 != j && i2 != k && abs(cent - p[i2]) < r - eps) {
            bo2 = true;
            break;
          }
        if (bo2) continue;
        ans = max(ans, r);
      }
  if (sign(ans - (-1)) == 0)
    cout << -1 << endl;
  else
    cout << setprecision(6) << fixed << ans << endl;
  return 0;
}
