#include <bits/stdc++.h>
using namespace std;
const int N = 1005;
using ld = long double;
const ld PI = acos(-1), EPS = 1e-10;
struct Point {
  ld x, y;
};
inline Point operator+(const Point &a, const Point &b) {
  return {a.x + b.x, a.y + b.y};
}
inline Point operator-(const Point &a, const Point &b) {
  return {a.x - b.x, a.y - b.y};
}
inline Point operator*(const Point &a, ld b) { return {a.x * b, a.y * b}; }
inline Point operator/(const Point &a, ld b) { return {a.x / b, a.y / b}; }
inline ld cross(const Point &a, const Point &b) {
  return a.x * b.y - a.y * b.x;
}
inline ld dot(const Point &a, const Point &b) { return a.x * b.x + a.y * b.y; }
inline ld dis(const Point &a) { return sqrt(dot(a, a)); }
inline ld angle(const Point &a, const Point &b) {
  return acos(dot(a, b) / dis(a) / dis(b));
}
inline ld polar(const Point &a) { return atan2(a.y, a.x); }
inline ld slope(const Point &a, const Point &b) {
  return (b.y - a.y) / (b.x - a.x);
}
inline Point perp(Point x) { return Point{-x.y, x.x} / dis(x); }
Point a[N], p[N], q2[N], ret[2];
struct Line {
  Point s, e;
  ld theta;
  Line() = default;
  Line(Point a, Point b) : s(a), e(b), theta(polar(b - a)) {}
} b[N], q1[N], t;
inline int sgn(ld x) { return x > EPS ? 1 : x < -EPS ? -1 : 0; }
inline bool operator<(Line a, Line b) {
  return sgn(a.theta - b.theta) ? a.theta < b.theta
                                : sgn(cross(a.e - a.s, b.e - a.s)) < 0;
}
inline bool cmp(int x, int y) { return b[x] < b[y]; }
int n, cur[N], pos[N];
bool vis[N];
inline Point inter(Line a, Line b) {
  ld s1 = cross(b.s - a.s, a.e - a.s), s2 = cross(a.e - a.s, b.e - a.s);
  return (b.s * s2 + b.e * s1) / (s1 + s2);
}
int ff, ee;
bool halfplane() {
  ff = 1, ee = 0;
  for (int i = 1; i <= n * 2; i++) {
    if (!vis[i] || (ff <= ee && !sgn(b[cur[i]].theta - q1[ee].theta))) continue;
    t = b[cur[i]];
    while (ff < ee && sgn(cross(t.e - t.s, q2[ee] - t.s)) <= 0) --ee;
    while (ff < ee && sgn(cross(t.e - t.s, q2[ff + 1] - t.s)) <= 0) ++ff;
    q1[++ee] = t;
    if (ff < ee) q2[ee] = inter(t, q1[ee - 1]);
  }
  t = q1[ff];
  while (ff < ee && sgn(cross(t.e - t.s, q2[ee] - t.s)) <= 0) --ee;
  return ee - ff > 1;
}
bool check(int l, int r) {
  memset(vis, 0, sizeof(vis));
  for (int i = 1; i <= n; i++) vis[pos[i]] = 1;
  for (int i = l; i <= r; i++) vis[pos[(i - 1) % n + n + 1]] = 1;
  return halfplane();
}
int mxr[N];
bool check(ld R) {
  for (int i = 1; i <= n; i++) {
    Point t = perp(b[i].e - b[i].s) * R;
    b[i + n] = Line(b[i].e + t, b[i].s + t);
    cur[i] = i;
    cur[i + n] = i + n;
  }
  sort(cur + 1, cur + n * 2 + 1, cmp);
  for (int i = 1; i <= n * 2; i++) pos[cur[i]] = i;
  for (int l = 1, r = 0; l <= n; l++) {
    while (r < n * 2 && check(l, r + 1)) ++r;
    check(l, mxr[l] = r);
    p[l] = q2[ee];
  }
  for (int l = 1; l <= n; l++)
    for (int r = l + 1; r <= mxr[l] + 1; r++)
      if (mxr[r] >= n + l - 1) {
        ret[0] = p[l];
        ret[1] = p[r];
        return 1;
      }
  return 0;
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int t1, t2;
    cin >> t1 >> t2;
    a[i].x = t1;
    a[i].y = t2;
  }
  for (int i = 1; i <= n; i++) b[i] = Line(a[i], a[i % n + 1]);
  ld l = 0, r = 50000;
  while (r - l > 1e-12) {
    ld mid = (l + r) / 2;
    if (check(mid))
      r = mid;
    else
      l = mid;
  }
  check(l + 5e-13);
  printf("%.15lf\n", double(l));
  printf("%.12lf %.12lf\n", double(ret[0].x), double(ret[0].y));
  printf("%.12lf %.12lf\n", double(ret[1].x), double(ret[1].y));
  return 0;
}
