#include <bits/stdc++.h>
using namespace std;

double grc(int x1, int y1, int x2, int y2, int x3, int y3, double *cx,
           double *cy) {
  double ox, oy, a, b, c, d;
  double r, r1, r2, r3;
  a = x2 - x1;
  b = y2 - y1;
  c = x3 - x1;
  d = y3 - y1;
  if((a && d) || (b && c)) {
    ox = x1 + (d * (a * a + b * b) - b * (c * c + d * d)) / (a * d - b * c) / 2;
    if(b) {
      oy = (a * (x1 + x2 - ox - ox) + b * (y1 + y2)) / b / 2;
    } else {
      oy = (c * (x1 + x3 - ox - ox) + d * (y1 + y3)) / d / 2;
    }
    r1 = sqrt((ox - x1) * (ox - x1) + (oy - y1) * (oy - y1));
    r2 = sqrt((ox - x2) * (ox - x2) + (oy - y2) * (oy - y2));
    r3 = sqrt((ox - x3) * (ox - x3) + (oy - y3) * (oy - y3));
    r = (r1 + r2 + r3) / 3;
    *cx = ox;
    *cy = oy;
    return r;
  }
  return -1;
}

bool isponl(int x, int y, int x1, int y1, int x2, int y2) {
  return ((y - y1) * (x2 - x1) == (y2 - y1) * (x - x1));
}

int main() {
  int n;
  cin >> n;
  vector<int> x(n), y(n);
  double len, tlen = 0;
  for(int i = 0; i < n; i++)
    cin >> x.at(i) >> y.at(i);
  if(n == 2)
    len = sqrt((x.at(1) - x.at(0)) * (x.at(1) - x.at(0)) +
               (y.at(1) - y.at(0)) * (y.at(1) - y.at(0))) /
          2;
  else {
    double t;
    int mp1, mp2;
    for(int i = 0; i < n - 1; i++) {
      for(int j = i + 1; j < n; j++) {
        t = sqrt((x.at(i) - x.at(j)) * (x.at(i) - x.at(j)) +
                 (y.at(i) - y.at(j)) * (y.at(i) - y.at(j))) /
            2;
        if(t > tlen) {
          mp1 = i;
          mp2 = j;
          tlen = t;
        }
      }
    }
    len = tlen;
    double ocx = (x.at(mp1) + x.at(mp2)) / 2.0,
           ocy = (y.at(mp1) + y.at(mp2)) / 2.0;
    int f = 1;
    for(int i = 0; i < n; i++)
      if(i != mp1 && i != mp2 &&
         len * len < (x.at(i) - ocx) * (x.at(i) - ocx) +
                         (y.at(i) - ocy) * (y.at(i) - ocy))
        f = 0;
    if(!f) {
      tlen = 10000;
      for(int i = 0; i < n; i++) {
        if(!isponl(x.at(mp1), y.at(mp1), x.at(mp2), y.at(mp2), x.at(i),
                   y.at(i))) {
          if(i != mp1 && i != mp2 &&
             len * len < (x.at(i) - ocx) * (x.at(i) - ocx) +
                             (y.at(i) - ocy) * (y.at(i) - ocy)) {
            double cx, cy,
                r = grc(x.at(mp1), y.at(mp1), x.at(mp2), y.at(mp2), x.at(i),
                        y.at(i), &cx, &cy);
            f = 1;
            for(int l = 0; l < n; l++)
              if(l != i && l != mp1 && l != mp2)
                if((x.at(l) - cx) * (x.at(l) - cx) +
                       (y.at(l) - cy) * (y.at(l) - cy) >
                   r * r)
                  f = 0;
            if(f)
              tlen = min(tlen, r);
          }
        }
      }
      len = tlen;
    }
    if(len == 10000) {
      for(int i = 0; i < n - 2; i++) {
        for(int j = i + 1; j < n - 1; j++) {
          for(int k = j + 1; k < n; k++) {
            if(!isponl(x.at(i), y.at(i), x.at(j), y.at(j), x.at(k), y.at(k))) {
              double cx, cy,
                  r = grc(x.at(j), y.at(j), x.at(k), y.at(k), x.at(i), y.at(i),
                          &cx, &cy);
              int f = 1;
              for(int l = 0; l < n; l++)
                if(l != i && l != j && l != k)
                  if((x.at(l) - cx) * (x.at(l) - cx) +
                         (y.at(l) - cy) * (y.at(l) - cy) >
                     r * r)
                    f = 0;
              if(f)
                len = min(len, r);
            }
          }
        }
      }
    }
  }
  cout << setprecision(16) << len << endl;
}

Measured memory_bytes: 256