#include <bits/stdc++.h>
using namespace std;
int n, x[101], y[101];
double ans = -1;
double twice(double a) { return a * a; }
double dist(double x1, double y1, double x2, double y2) {
  return sqrt(twice(x1 - x2) + twice(y1 - y2));
}
void check(double xx, double yy, double dis) {
  for (int i = 1; i <= n; i++) {
    double ret = dist(xx, yy, x[i], y[i]);
    if (ret + 1e-7 < dis) return;
  }
  ans = max(ans, dis);
}
void workrec(int a, int b, int c) {
  int xx = x[b] + x[c] - x[a], yy = y[b] + y[c] - y[a];
  bool ok = false;
  for (int i = 1; i <= n; i++)
    if (xx == x[i] && yy == y[i]) ok = true;
  if (!ok) return;
  double xc = (xx + x[a]) / 2.0, yc = (yy + y[a]) / 2.0;
  check(xc, yc, dist(xc, yc, x[a], y[a]));
}
void worktri(int a, int b, int c) {
  double p1 = 2 * (x[a] - x[b]), q1 = 2 * (y[a] - y[b]);
  double p2 = 2 * (x[a] - x[c]), q2 = 2 * (y[a] - y[c]);
  double c1 = twice(x[a]) - twice(x[b]) + twice(y[a]) - twice(y[b]);
  double c2 = twice(x[a]) - twice(x[c]) + twice(y[a]) - twice(y[c]);
  if (p1 == 0) swap(p1, p2), swap(q1, q2), swap(c1, c2);
  if (p2 != 0) q2 -= q1 * p2 / p1, c2 -= c1 * p2 / p1;
  double yc = c2 / q2;
  c1 -= yc * q1;
  double xc = c1 / p1;
  check(xc, yc, dist(xc, yc, x[a], y[a]));
}
int dot(int x1, int y1, int x2, int y2) { return x1 * x2 + y1 * y2; }
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%d%d", &x[i], &y[i]);
  for (int i = 1, t; i <= n; i++)
    for (int j = i + 1; j <= n; j++)
      for (int k = j + 1; k <= n; k++) {
        t = dot(x[i] - x[j], y[i] - y[j], x[i] - x[k], y[i] - y[k]);
        if (t == 0) workrec(i, j, k);
        if (t <= 0) continue;
        t = dot(x[j] - x[i], y[j] - y[i], x[j] - x[k], y[j] - y[k]);
        if (t == 0) workrec(j, i, k);
        if (t <= 0) continue;
        t = dot(x[k] - x[i], y[k] - y[i], x[k] - x[j], y[k] - y[j]);
        if (t == 0) workrec(k, i, j);
        if (t <= 0) continue;
        worktri(i, j, k);
      }
  if (ans <= 0)
    puts("-1");
  else
    printf("%.6lf\n", ans);
}
