#include <bits/stdc++.h>
using namespace std;
struct Point {
  double x, y;
  Point() {}
  Point(double _x, double _y) {
    x = _x;
    y = _y;
  }
  Point operator-(const Point &b) const { return Point(x - b.x, y - b.y); }
  double operator^(const Point &b) const { return x * b.y - y * b.x; }
  double operator*(const Point &b) const { return x * b.x + y * b.y; }
  void transXY(double B) {
    double tx = x, ty = y;
    x = tx * cos(B) - ty * sin(B);
    y = tx * sin(B) + ty * cos(B);
  }
};
struct Line {
  Point s, e;
  Line() {}
  Line(Point _s, Point _e) {
    s = _s;
    e = _e;
  }
};
Point PointToLine(Point P, Line L) {
  Point result;
  double t = ((P - L.s) * (L.e - L.s)) / ((L.e - L.s) * (L.e - L.s));
  result.x = L.s.x + (L.e.x - L.s.x) * t;
  result.y = L.s.y + (L.e.y - L.s.y) * t;
  return result;
}
Point ver[1010];
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; ++i) cin >> ver[i].x >> ver[i].y;
  ver[0] = ver[n];
  ver[n + 1] = ver[1];
  double ans = 1e12;
  for (int i = 1; i <= n; ++i) {
    Line l;
    l.s = ver[i - 1];
    l.e = ver[i + 1];
    Point p = PointToLine(ver[i], l);
    double len = sqrt((ver[i].x - p.x) * (ver[i].x - p.x) +
                      (ver[i].y - p.y) * (ver[i].y - p.y));
    ans = min(ans, len / 2);
  }
  printf("%.010lf\n", ans);
}
