#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker, "/STACK:667772160")
struct debugger {
  template <typename T>
  debugger &operator,(const T &v) {
    cerr << v << " ";
    return *this;
  }
} dbg;
struct PT {
  double x, y;
  PT() {}
  PT(double x, double y) : x(x), y(y) {}
  PT(const PT &p) : x(p.x), y(p.y) {}
  PT operator+(const PT &p) const { return PT(x + p.x, y + p.y); }
  PT operator-(const PT &p) const { return PT(x - p.x, y - p.y); }
  PT operator*(double c) const { return PT(x * c, y * c); }
  PT operator/(double c) const { return PT(x / c, y / c); }
};
double dot(PT p, PT q) { return p.x * q.x + p.y * q.y; }
double dist2(PT p, PT q) { return dot(p - q, p - q); }
double distPoint(PT p, PT q) { return sqrt(dot(p - q, p - q)); }
double cross(PT p, PT q) { return p.x * q.y - p.y * q.x; }
PT ProjectPointSegment(PT a, PT b, PT c) {
  double r = dot(b - a, b - a);
  if (fabs(r) < 1e-7) return a;
  r = dot(c - a, b - a) / r;
  if (r < 0) return a;
  if (r > 1) return b;
  return a + (b - a) * r;
}
PT arr[10000 + 7];
int main() {
  int n, tmp;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) scanf("%lf %lf", &arr[i].x, &arr[i].y);
  arr[n] = arr[0];
  double ans = 10000000000.0, tx, ty;
  PT tp;
  for (int i = 0; i < n; i++) {
    tmp = (i - 1 + n) % n;
    tp = ProjectPointSegment(arr[tmp], arr[(i + 1) % n], arr[i]);
    ans = min(ans, distPoint(arr[i], tp));
  }
  ans = ans / 2.0;
  printf("%.10f\n", ans);
  return 0;
}
