#include <bits/stdc++.h>
using namespace std;
struct Point {
  double x, y;
  Point operator-(const Point q) { return {x - q.x, y - q.y}; }
};
double dist(const Point &p, const Point &q) {
  return sqrt((p.x - q.x) * (p.x - q.x) + (p.y - q.y) * (p.y - q.y));
}
double vec(const Point &p, const Point &q) { return p.x * q.y - p.y * q.x; }
double scalar(const Point &p, const Point &q) { return p.x * q.x + p.y * q.y; }
int main() {
  int n;
  cin >> n;
  vector<Point> v(n);
  for (auto &p : v) {
    cin >> p.x >> p.y;
  }
  double ans = 1e18;
  for (int i = 0; i < n; i++) {
    int ni = i + 1;
    if (ni == n) {
      ni = 0;
    }
    ans = min(ans, dist(v[i], v[ni]));
    int i1 = i, i2 = ni, i3 = ni + 1;
    if (i3 == n) {
      i3 = 0;
    }
    auto p1 = v[i1], p2 = v[i2], p3 = v[i3];
    auto v1 = p2 - p3, v2 = p1 - p3;
    double alp = abs(atan2(vec(v1, v2), scalar(v1, v2)));
    double h = dist(p2, p3) * sin(alp);
    ans = min(ans, h / 2);
  }
  cout.precision(10);
  cout << fixed << ans << endl;
}
