#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100 + 10, INF = 1000000;
const double EPS = 1e-4;
struct P {
  long long x, y;
  P(long long x = 0, long long y = 0) : x(x), y(y){};
  P operator-(P t) const { return P(x - t.x, y - t.y); }
  P operator+(P t) const { return P(x + t.x, y + t.y); }
  bool operator==(P t) const { return x == t.x && y == t.y; }
} pt[MAXN];
int n;
double ans = -1;
P t[10];
long long dot(P a, P b) { return a.x * b.x + a.y * b.y; }
long long det(P a, P b) { return a.x * b.y - a.y * b.x; }
inline int dcmp(double x) { return fabs(x) < EPS ? 0 : (x < 0 ? -1 : 1); }
inline double sqr(double x) { return x * x; }
void check(double cx, double cy, double R) {
  double ret = INF;
  for (int i = 1; i <= n; ++i) {
    double di = sqrt(sqr(cx - pt[i].x) + sqr(cy - pt[i].y));
    if (di + EPS < R) return;
  };
  ans = max(ans, R);
}
inline int updTri(int i, int j, int k) {
  P A = pt[i], B = pt[j], C = pt[k];
  if (dot(B - A, C - A) <= 0 || dot(A - B, C - B) <= 0 ||
      dot(A - C, B - C) <= 0)
    return 0;
  long long a = 2 * (A.x - B.x), b = 2 * (A.y - B.y), c = 2 * (A.x - C.x),
            d = 2 * (A.y - C.y), e = sqr(A.x) + sqr(A.y) - sqr(B.x) - sqr(B.y),
            f = sqr(A.x) + sqr(A.y) - sqr(C.x) - sqr(C.y);
  double x = (d * e - b * f) * 1.0 / (a * d - b * c),
         y = (a * f - c * e) * 1.0 / (a * d - b * c);
  check(x, y, sqrt(((x - A.x) * (x - A.x)) + ((y - A.y) * (y - A.y))));
  return 1;
}
long long dis(P a, P b) { return sqr(a.x - b.x) + sqr(a.y - b.y); }
bool cmp(P a, P b) { return a.x == b.x ? a.y < b.y : a.x < b.y; }
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; ++i) scanf("%I64d %I64d", &pt[i].x, &pt[i].y);
  P x, y, z, cur, op;
  long long a, b, c;
  for (int i = 1; i <= n; ++i)
    for (int j = i + 1; j <= n; ++j)
      for (int k = j + 1; k <= n; ++k) {
        if (updTri(i, j, k)) continue;
        ;
        int flag = 0;
        x = pt[i];
        y = pt[j];
        z = pt[k];
        a = dis(x, y);
        b = dis(x, z);
        c = dis(y, z);
        if (a + b == c || a + c == b || b + c == a) {
          if (a + b == c) {
            cur = y + z - x;
            op = x;
          };
          if (a + c == b) {
            cur = x + z - y;
            op = y;
          };
          if (b + c == a) {
            cur = x + y - z;
            op = z;
          };
          flag = 1;
        };
        if (!flag) continue;
        for (int l = k + 1; l <= n; ++l)
          if (pt[l] == cur) {
            double cx = (cur.x + op.x) * 1.0 / 2, cy = (cur.y + op.y) * 1.0 / 2;
            check(cx, cy,
                  sqrt(((cur.x - op.x) * (cur.x - op.x)) +
                       ((cur.y - op.y) * (cur.y - op.y))) /
                      2);
            break;
          };
      };
  if (ans < 0)
    printf("-1\n");
  else
    printf("%.9f\n", ans);
  return 0;
}
