#include <bits/stdc++.h>
using namespace std;
class vec2 {
 public:
  double x;
  double y;
  vec2() {
    x = 0;
    y = 0;
  }
  vec2(int _x, int _y) {
    x = (double)_x;
    y = (double)_y;
  }
  vec2(double _x, double _y) {
    x = _x;
    y = _y;
  }
  vec2 operator+(vec2 v) { return vec2(x + v.x, y + v.y); }
  vec2 operator-(vec2 v) { return vec2(x - v.x, y - v.y); }
  vec2 operator*(double a) { return vec2(x * a, y * a); }
  double length() { return sqrt(x * x + y * y); }
  vec2 normalize() {
    double len = (*this).length();
    return vec2(x / len, y / len);
  }
  double dot(vec2 v) { return x * v.x + y * v.y; }
  double dist(vec2 v) { return ((*this) - v).length(); }
  vec2 project(vec2 v) {
    vec2 p = v.normalize();
    return p * p.dot(*this);
  }
  vec2 perpendicularFoot(vec2 a, vec2 b) {
    return a + ((*this) - a).project(b - a);
  }
  double toLine(vec2 a, vec2 b) {
    vec2 foot = perpendicularFoot(a, b);
    return dist(foot);
  }
};
int main() {
  int N;
  vector<vec2> Vertex;
  int tx, ty;
  scanf("%d", &N);
  for (int i = 0; i < N; i++) {
    scanf("%d %d", &tx, &ty);
    Vertex.push_back(vec2(tx, ty));
  }
  double min_d = 1e10;
  for (int i = 0; i < N; i++) {
    vec2 prev = Vertex[(i + N - 1) % N];
    vec2 next = Vertex[(i + 1) % N];
    min_d = min(min_d, Vertex[i].toLine(prev, next) / 2.0);
  }
  printf("%.10lf\n", min_d);
  return 0;
}
