#include <bits/stdc++.h>
using namespace std;
class Point {
 public:
  double x, y;
  Point() {}
  Point(double x, double y) : x(x), y(y) {}
  bool operator<(const Point &_se) const {
    return x < _se.x || (x == _se.x && y < _se.y);
  }
  static int sgn(double ta, double tb) {
    if (fabs(ta - tb) < 0.00000001) return 0;
    if (ta < tb) return -1;
    return 1;
  }
  static double xmult(const Point &po, const Point &ps, const Point &pe) {
    return (ps.x - po.x) * (pe.y - po.y) - (pe.x - po.x) * (ps.y - po.y);
  }
  friend Point operator+(const Point &_st, const Point &_se) {
    return Point(_st.x + _se.x, _st.y + _se.y);
  }
  friend Point operator-(const Point &_st, const Point &_se) {
    return Point(_st.x - _se.x, _st.y - _se.y);
  }
  bool operator==(const Point &_off) const {
    return Point::sgn(x, _off.x) == 0 && Point::sgn(y, _off.y) == 0;
  }
  bool operator!=(const Point &_Off) const {
    return ((*this) == _Off) == false;
  }
  static double dis2(const Point &_st, const Point &_se) {
    return (_st.x - _se.x) * (_st.x - _se.x) +
           (_st.y - _se.y) * (_st.y - _se.y);
  }
  static double dis(const Point &_st, const Point &_se) {
    return sqrt((_st.x - _se.x) * (_st.x - _se.x) +
                (_st.y - _se.y) * (_st.y - _se.y));
  }
};
class Line {
 public:
  Point s, e;
  double a, b, c;
  double operator/(const Point &_Off) const {
    return (_Off.y - s.y) * (e.x - s.x) - (_Off.x - s.x) * (e.y - s.y);
  }
  friend double operator/(const Line &_st, const Line &_se) {
    return (_st.e.x - _st.s.x) * (_se.e.y - _se.s.y) -
           (_st.e.y - _st.s.y) * (_se.e.x - _se.s.x);
  }
  friend double operator*(const Line &_st, const Line &_se) {
    return (_st.e.x - _st.s.x) * (_se.e.x - _se.s.x) -
           (_st.e.y - _st.s.y) * (_se.e.y - _se.s.y);
  }
  bool pton() {
    a = e.y - s.y;
    b = s.x - e.x;
    c = e.x * s.y - e.y * s.x;
    return true;
  }
  double dis(const Point &_Off, bool isSegment = false) {
    pton();
    double td = (a * _Off.x + b * _Off.y + c) / sqrt(a * a + b * b);
    if (isSegment) {
      double xp = (b * b * _Off.x - a * b * _Off.y - a * c) / (a * a + b * b);
      double yp = (-a * b * _Off.x + a * a * _Off.y - b * c) / (a * a + b * b);
      double xb = max(s.x, e.x);
      double yb = max(s.y, e.y);
      double xs = s.x + e.x - xb;
      double ys = s.y + e.y - yb;
      if (xp > xb + 0.00000001 || xp < xs - 0.00000001 ||
          yp > yb + 0.00000001 || yp < ys - 0.00000001)
        td = min(Point::dis(_Off, s), Point::dis(_Off, e));
    }
    return fabs(td);
  }
};
Point p[500009];
Line la;
int n;
double ans = 1000000000000.0;
int main() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) scanf("%lf%lf", &p[i].x, &p[i].y);
  p[n + 1] = p[1], p[n + 2] = p[2];
  for (int i = 1; i <= n; i++) {
    la.s = p[i], la.e = p[i + 2];
    ans = min(la.dis(p[i + 1]) / 2.0, ans);
  }
  printf("%.10lf\n", ans);
  return 0;
}
