#include <bits/stdc++.h>   using namespace std;   double PI = acos(-1);   struct point {     long long x, y;     point(long long x = 0, long long y = 0) {       this->x = x;       this->y = y;     }     bool operator==(point& p) { return p.x == x && p.y == y; }   } a[100010], origin;   struct vecto {     long long x, y;     vecto(long long x = 0, long long y = 0) {       this->x = x;       this->y = y;     }   };   vecto toVec(point a, point b) { return vecto(b.x - a.x, b.y - a.y); }   long long crossProduct(vecto a, vecto b) { return a.x * b.y - a.y * b.x; }   long long dotProduct(vecto a, vecto b) { return a.x * b.x + a.y * b.y; }   long long dist(point a, point b) {     return (a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y);   }   int main() {     ios::sync_with_stdio(0);     int n;     cin >> n;     for (int i = (0); i <= (n - 1); i++) cin >> a[i].x >> a[i].y;     double res = 1e15;     for (int i = (0); i <= (n - 1); i++) {       int prev = (i - 1 + n) % n;       int next = (i + 1) % n;       if (dotProduct(toVec(a[prev], a[next]), toVec(a[next], a[i])) >= 0)         res = min(res, sqrt(dist(a[i], a[next])));       else if (dotProduct(toVec(a[next], a[prev]), toVec(a[prev], a[i])) >= 0)         res = min(res, sqrt(dist(a[i], a[prev])));       else         res =             min(res, crossProduct(toVec(a[prev], a[next]), toVec(a[prev], a[i])) /                          sqrt(dist(a[prev], a[next])));     }     cout << fixed << setprecision(9) << res / 2;     return 0;   }   