#include <bits/stdc++.h>
using namespace std;
class TaskB {
 public:
  TaskB() { std::ios::sync_with_stdio(false); }
  long double dist(const pair<long double, long double> a,
                   const pair<long double, long double> b) {
    return sqrt((a.first - b.first) * (a.first - b.first) +
                (a.second - b.second) * (a.second - b.second));
  }
  long double height(pair<long double, long double> a,
                     pair<long double, long double> b,
                     pair<long double, long double> c) {
    b.first -= a.first;
    b.second -= a.second;
    c.first -= a.first;
    c.second -= a.second;
    a.first = 0;
    a.second = 0;
    long double sq = abs(b.first * c.second - c.first * b.second);
    return sq / dist(a, c);
  }
  void solve(std::istream& in, std::ostream& out) {
    int n;
    in >> n;
    vector<pair<long double, long double>> a(n);
    for (auto& it : a) {
      in >> it.first >> it.second;
    }
    a.push_back(a[0]);
    a.push_back(a[1]);
    long double ans = dist(a[0], a[1]);
    for (int i = 0; i < n; ++i) {
      long double cur = dist(a[i], a[i + 1]) / 2;
      if (cur < ans) ans = cur;
    }
    for (int i = 0; i < n; ++i) {
      long double cur = height(a[i], a[i + 1], a[i + 2]) / 2;
      if (cur < ans) ans = cur;
      cerr << cur << endl;
    }
    out.precision(10);
    out << fixed << ans << endl;
  }
};
int main() {
  TaskB solver;
  std::istream& in(std::cin);
  std::ostream& out(std::cout);
  solver.solve(in, out);
  return 0;
}
