#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3")
#pragma GCC target("sse4")
const long double PI = acos(-1.0);
const long long mod = 1000000007;
const long long INF = 1e9;
const long long LINF = 4e18;
const long long MAXN = 2e5 + 1;
const long double EPS = 1e-9;
struct point {
  long double x;
  long double y;
  void read() { cin >> x >> y; }
  point operator-(point b) { return {x - b.x, y - b.y}; }
  point operator*(long double mul) { return {x * mul, y * mul}; }
  long double operator*(point b) { return x * b.y - y * b.x; }
  long double dist(point p) {
    return sqrt((x - p.x) * (x - p.x) + (y - p.y) * (y - p.y));
  }
};
struct L2 {
  point one;
  point two;
  long double dist(point he) {
    return abs((he - one) * (he - two)) / one.dist(two);
  }
};
int dist(int i, int j, int n) {
  return min(abs(i - j), min(abs(n - i + j), abs(n + i - j)));
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  int n;
  cin >> n;
  vector<point> a(n);
  for (int i = (0); i < (n); ++i) a[i].read();
  long double ans = LINF;
  for (int i = (0); i < (n); ++i)
    for (int j = (0); j < (n); ++j)
      if (i != j && dist(i, j, n) <= 2)
        for (int k = (0); k < (n); ++k)
          if (k != i && k != j && dist(i, k, n) <= 2)
            ans = min(ans, L2{a[i], a[j]}.dist(a[k]));
  ans /= 2;
  cout << fixed << setprecision(10) << ans;
  cin >> n;
  return 0;
}
