#include <bits/stdc++.h>
using namespace std;
double Solve(double xa, double ya, double xb, double yb, double x, double y,
             double add) {
  double len = sqrt((xa - xb) * (xa - xb) + (ya - yb) * (ya - yb));
  double ret = 0;
  double low = 0;
  double high = 1;
  for (int it = 0; it < 80; it++) {
    double mid1 = (2 * low + high) / 3;
    double xx = xa * (1 - mid1) + xb * mid1;
    double yy = ya * (1 - mid1) + yb * mid1;
    double val1 =
        (len * mid1 + add) / sqrt((xx - x) * (xx - x) + (yy - y) * (yy - y));
    double mid2 = (low + 2 * high) / 3;
    xx = xa * (1 - mid2) + xb * mid2;
    yy = ya * (1 - mid2) + yb * mid2;
    double val2 =
        (len * mid2 + add) / sqrt((xx - x) * (xx - x) + (yy - y) * (yy - y));
    ret = max(ret, max(val1, val2));
    if (val1 > val2) {
      high = mid2;
    } else {
      low = mid1;
    }
  }
  return ret;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  int n;
  cin >> n;
  vector<int> x(n + 1);
  vector<int> y(n + 1);
  for (int i = 0; i <= n; i++) {
    cin >> x[i] >> y[i];
  }
  double ans = 1;
  for (int id = 1; id <= n - 2; id++) {
    double low = 0;
    double high = 1;
    for (int it = 0; it < 60; it++) {
      double mid = (low + high) / 2;
      double xx = x[id] * (1 - mid) + x[id + 1] * mid;
      double yy = y[id] * (1 - mid) + y[id + 1] * mid;
      double m1 = 1;
      for (int jd = 0; jd < id; jd++) {
        double add = 0;
        for (int i = jd + 1; i < id; i++) {
          add += sqrt((x[i] - x[i + 1]) * (x[i] - x[i + 1]) +
                      (y[i] - y[i + 1]) * (y[i] - y[i + 1]));
        }
        int i = id;
        add += mid * sqrt((x[i] - x[i + 1]) * (x[i] - x[i + 1]) +
                          (y[i] - y[i + 1]) * (y[i] - y[i + 1]));
        m1 = max(m1, Solve(x[jd + 1], y[jd + 1], x[jd], y[jd], xx, yy, add));
      }
      double m2 = 1;
      for (int jd = id + 1; jd <= n - 1; jd++) {
        double add = 0;
        for (int i = id + 1; i < jd; i++) {
          add += sqrt((x[i] - x[i + 1]) * (x[i] - x[i + 1]) +
                      (y[i] - y[i + 1]) * (y[i] - y[i + 1]));
        }
        int i = id;
        add += (1 - mid) * sqrt((x[i] - x[i + 1]) * (x[i] - x[i + 1]) +
                                (y[i] - y[i + 1]) * (y[i] - y[i + 1]));
        m2 = max(m2, Solve(x[jd], y[jd], x[jd + 1], y[jd + 1], xx, yy, add));
      }
      ans = max(ans, min(m1, m2));
      if (m1 <= m2) {
        low = mid;
      } else {
        high = mid;
      }
    }
  }
  cout << fixed << setprecision(17) << ans << '\n';
  return 0;
}
