#include <bits/stdc++.h>
using namespace std;
const int MX = 1e5 + 69;
int n, XX[MX], YY[MX];
vector<complex<double> > v;
complex<double> divide_line_by_ratio(const complex<double> &a,
                                     const complex<double> &b,
                                     const double &r) {
  return a + r * (b - a);
}
double point_line_distance(const complex<double> &a, const complex<double> &b,
                           const complex<double> &p, complex<double> &res) {
  double temp =
      ((conj((b - a)) * (p - a)).real()) / ((conj((b - a)) * (b - a)).real());
  res = divide_line_by_ratio(a, b, temp);
  return hypot((p - res).real(), (p - res).imag());
}
bool check(long double mid) {
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      if (i == j) continue;
      long double z = 1.0 * (XX[i] - 1.0 * XX[j]) * (1.0 * XX[i] - XX[j]) +
                      (1.0 * YY[i] - YY[j]) * (1.0 * YY[i] - YY[j]);
      if (z < mid * 4 * mid) return 0;
    }
  }
  for (int i = 1; i <= n; i++) {
    int j, k;
    j = i;
    k = i;
    if (j + 1 > n)
      j = j + 1 - n;
    else
      j++;
    if (k + 2 > n)
      k = k + 2 - n;
    else
      k += 2;
    complex<double> a(XX[i], YY[i]);
    complex<double> b(XX[j], YY[j]);
    complex<double> c(XX[k], YY[k]);
    complex<double> haf;
    long double sex = point_line_distance(a, c, b, haf);
    if (sex < 2 * mid) return 0;
  }
  return 1;
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; i++) scanf("%d%d", XX + i, YY + i);
  long double st = 0, en = 3e9 + 69;
  for (int j = 0; j < 123; j++) {
    long double mid = (st + en) / 2;
    if (check(mid))
      st = mid;
    else
      en = mid;
  }
  cout << fixed;
  cout.precision(7);
  cout << st;
}
