#include <bits/stdc++.h>
using namespace std;
struct P {
  long long x, y;
  P operator+(P b) { return P{x + b.x, y + b.y}; }
  P operator-(P b) { return P{x - b.x, y - b.y}; }
};
long double dist(P a, P b) {
  return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}
long double cross(P a, P b) { return a.x * b.y - b.x * a.y; }
long double find(P a, P b, P c) {
  long double r = dist(a, c), s = abs(cross(b - a, c - a));
  return (0.5 * s) / r;
}
int main() {
  int n;
  vector<P> v;
  cin >> n;
  for (int i = 0; i < n; ++i) {
    long long a, b;
    cin >> a >> b;
    P agr;
    agr.x = a, agr.y = b;
    v.push_back(agr);
  }
  long double ans = 1e16;
  for (int i = 0; i < n; ++i) {
    for (int j = 0; j < 2 * n; ++j) {
      if (abs(i - j) <= 2) {
        for (int k = 0; k < 2 * n; ++k) {
          if (abs(i - k) <= 2 and set<int>{i % n, j % n, k % n}.size() == 3) {
            ans = min(ans, find(v[i % n], v[j % n], v[k % n]));
          }
        }
      }
    }
  }
  cout.precision(10);
  cout << ans << "\n";
}
