#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const long long INF = std::numeric_limits<long long>::max();
const int MX = 100001;
const long double PI =
    3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270;
pair<long double, long double> toVec(pair<long double, long double> a,
                                     pair<long double, long double> b) {
  return pair<long double, long double>(b.first - a.first, b.second - a.second);
}
long double norm_sq(pair<long double, long double> v) {
  return v.first * v.first + v.second * v.second;
}
long double cross(pair<long double, long double> a,
                  pair<long double, long double> b) {
  return a.first * b.second - a.second * b.first;
}
long double dist(pair<long double, long double> a,
                 pair<long double, long double> b) {
  return sqrtl(norm_sq(toVec(a, b)));
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int N;
  cin >> N;
  vector<pair<long double, long double> > pts(N);
  for (int i = 0; i < N; ++i) {
    cin >> pts[i].first >> pts[i].second;
  }
  pts.push_back(pts[0]);
  pts.push_back(pts[1]);
  long double ats = INF;
  for (int i = 1; i <= N; ++i) {
    pair<long double, long double> a = pts[i];
    pair<long double, long double> b = pts[i - 1];
    pair<long double, long double> c = pts[i + 1];
    long double dis = cross(toVec(a, b), toVec(a, c)) / dist(b, c);
    ats = min(ats, dis / 2.0);
  }
  printf("%.9Lf\n", ats);
}
