#include <bits/stdc++.h>
using namespace std;
const int inf = 0x20202020;
const int mod = 1000000007;
template <class T>
inline void read(T& x) {
  bool fu = 0;
  char c;
  for (c = getchar(); c <= 32; c = getchar())
    ;
  if (c == '-') fu = 1, c = getchar();
  for (x = 0; c > 32; c = getchar()) x = x * 10 + c - '0';
  if (fu) x = -x;
};
template <class T>
inline void read(T& x, T& y) {
  read(x);
  read(y);
}
template <class T>
inline void read(T& x, T& y, T& z) {
  read(x);
  read(y);
  read(z);
}
template <class T>
inline void read(T& x, T& y, T& z, T& q) {
  read(x);
  read(y);
  read(z);
  read(q);
}
const int DX[] = {1, 0, -1, 0}, DY[] = {0, 1, 0, -1};
long long powmod(long long a, long long b) {
  long long res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
long long powmod(long long a, long long b, long long mod) {
  long long res = 1;
  a %= mod;
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
const int N = 111111, M = 111111;
int l, m, n, t, C;
pair<double, double> a[N];
pair<double, double> calc(pair<double, double> p0, pair<double, double> p1,
                          pair<double, double> p2) {
  double a1 = p1.first - p0.first, b1 = p1.second - p0.second,
         c1 = (((a1) * (a1)) + ((b1) * (b1))) / 2;
  double a2 = p2.first - p0.first, b2 = p2.second - p0.second,
         c2 = (((a2) * (a2)) + ((b2) * (b2))) / 2;
  double d = a1 * b2 - a2 * b1;
  return make_pair(p0.first + (c1 * b2 - c2 * b1) / d,
                   p0.second + (a1 * c2 - a2 * c1) / d);
}
double dis(pair<double, double> a, pair<double, double> b) {
  return sqrt(((a.first - b.first) * (a.first - b.first)) +
              ((a.second - b.second) * (a.second - b.second)));
}
double dis2(int x, int y) {
  return ((a[x].first - a[y].first) * (a[x].first - a[y].first)) +
         ((a[x].second - a[y].second) * (a[x].second - a[y].second));
}
set<pair<double, double> > S;
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= (n); ++i)
    scanf("%lf%lf", &a[i].first, &a[i].second), S.insert(a[i]);
  double ans = 0;
  for (int i = (1); i <= (n); ++i)
    for (int j = (i + 1); j <= (n); ++j)
      for (int k = (j + 1); k <= (n); ++k)
        if (dis2(i, j) + dis2(j, k) > dis2(i, k) + 1e-8 &&
            dis2(i, j) + dis2(i, k) > dis2(j, k) + 1e-8 &&
            dis2(i, k) + dis2(j, k) > dis2(i, j) + 1e-8) {
          pair<double, double> cen = calc(a[i], a[j], a[k]);
          double t = 1e30;
          for (int _ = (1); _ <= (n); ++_) t = min(t, dis(cen, a[_]));
          if (t + 1e-8 > dis(cen, a[i])) ans = max(ans, t);
        }
  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 (i != k && j != k) {
            if (abs(dis2(i, k) + dis2(j, k) - dis2(i, j)) > 1e-8) continue;
            pair<double, double> al =
                make_pair(a[i].first + a[j].first - a[k].first,
                          a[i].second + a[j].second - a[k].second);
            if (S.find(al) == S.end()) continue;
            pair<double, double> cen = make_pair(
                (a[i].first + a[j].first) / 2, (a[i].second + a[j].second) / 2);
            double t = 1e30;
            for (int _ = (1); _ <= (n); ++_) t = min(t, dis(cen, a[_]));
            if (t + 1e-8 > dis(cen, a[i])) ans = max(ans, t);
          }
  if (ans == 0) {
    puts("-1");
    return 0;
  }
  printf("%.9lf\n", ans);
  return 0;
}
