#include <bits/stdc++.h>
using namespace std;
double ans, dis, X, Y, P, Q;
int i, j, k, A[105], B[105], l, n;
const double eps = 1e-9;
bool FLAG;
map<int, int> mp;
double sqr(double x) { return x * x; }
void work(int x, int y, int z) {
  if (B[y] == B[x] && B[y] == B[z]) {
    FLAG = false;
    return;
  }
  if (B[y] == B[z]) swap(x, z);
  double k2 = -(A[y] - A[z]) / (B[y] - B[z] + 0.0);
  double xx = (A[y] + A[z]) / 2.0, yy = (B[y] + B[z]) / 2.0;
  double b2 = yy - k2 * xx;
  xx = (A[x] + A[y]) / 2.0;
  yy = (B[x] + B[y]) / 2.0;
  if (B[x] == B[y]) {
    X = xx;
    Y = xx * k2 + b2;
    return;
  }
  double k1 = -(A[y] - A[x]) / (B[y] - B[x] + 0.0);
  double b1 = yy - k1 * xx;
  if (fabs(k1 - k2) < eps) {
    FLAG = false;
    return;
  }
  X = (b2 - b1) / (k1 - k2);
  Y = X * k2 + b2;
  return;
}
int main() {
  scanf("%d", &n);
  for (i = 1; i <= n; i++) {
    scanf("%d%d", &A[i], &B[i]);
    mp[A[i] * 20005 + B[i]] = 1;
  }
  ans = -1;
  for (i = 1; i <= n; i++)
    for (j = i + 1; j <= n; j++)
      for (k = j + 1; k <= n; k++) {
        FLAG = true;
        work(i, j, k);
        if (!FLAG) continue;
        if ((A[j] - A[i]) * (A[k] - A[i]) + (B[j] - B[i]) * (B[k] - B[i]) > 0 &&
            (A[j] - A[k]) * (A[i] - A[k]) + (B[j] - B[k]) * (B[i] - B[k]) > 0 &&
            (A[i] - A[j]) * (A[k] - A[j]) + (B[i] - B[j]) * (B[k] - B[j]) > 0) {
          FLAG = true;
          dis = sqrt(sqr(A[i] - X) + sqr(B[i] - Y));
          for (l = 1; l <= n; l++)
            if (sqrt(sqr(A[l] - X) + sqr(B[l] - Y)) + eps < dis) {
              FLAG = false;
              break;
            }
          if (FLAG) ans = max(ans, dis);
        }
        P = Q = -10001;
        if ((A[j] - A[i]) * (A[k] - A[i]) + (B[j] - B[i]) * (B[k] - B[i]) == 0)
          P = int(eps + X * 2 - A[i]), Q = int(eps + Y * 2 - B[i]);
        if ((A[j] - A[k]) * (A[i] - A[k]) + (B[j] - B[k]) * (B[i] - B[k]) == 0)
          P = int(eps + X * 2 - A[k]), Q = int(eps + Y * 2 - B[k]);
        if ((A[i] - A[j]) * (A[k] - A[j]) + (B[i] - B[j]) * (B[k] - B[j]) == 0)
          P = int(eps + X * 2 - A[j]), Q = int(eps + Y * 2 - B[j]);
        if (mp[P * 20005 + Q]) {
          FLAG = true;
          dis = sqrt(sqr(A[i] - X) + sqr(B[i] - Y));
          for (l = 1; l <= n; l++)
            if (sqrt(sqr(A[l] - X) + sqr(B[l] - Y)) + eps < dis) {
              FLAG = false;
              break;
            }
          if (FLAG) ans = max(ans, dis);
        }
      }
  if (ans < 0)
    printf("-1\n");
  else
    printf("%.10f\n", ans);
  return 0;
}
