#include <bits/stdc++.h>
using namespace std;
struct Point {
  long double x, y;
  Point() { x = y = 0; }
  Point(long double a, long double b) { x = a, y = b; }
  Point operator+(Point o) { return Point(x + o.x, y + o.y); }
  Point operator-(Point o) { return Point(x - o.x, y - o.y); }
  Point operator/(long double o) { return Point(x / o, y / o); }
};
int n;
vector<Point> P, V;
int Sign(long double x) { return (x > 1e-9 ? 1 : (x < -1e-9 ? -1 : 0)); }
bool Equal(long double x, long double y) { return Sign(x - y) == 0; }
long double Abs(long double x) { return Sign(x) * x; }
long double Cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }
long double Length(Point q) { return sqrt(q.x * q.x + q.y * q.y); }
long double Disance(Point q, int i) {
  return Abs(Cross(q - P[i], V[i])) / Length(V[i]);
}
int main() {
  scanf("%d", &n);
  P.resize(n * 3 + 1);
  V.resize(n * 3);
  for (int i = 0; i <= n * 3; ++i) {
    if (i < n)
      cin >> P[i].x >> P[i].y;
    else
      P[i] = P[i - n];
  }
  for (int i = 0; i < n * 3; ++i) V[i] = P[i + 1] - P[i];
  vector<vector<long double> > R(n, vector<long double>(n, 1e9));
  vector<vector<Point> > S(n, vector<Point>(n));
  for (int s = 0; s < n; s++) {
    int mid = s;
    for (int t = s; s == t || Sign(Cross(V[s], V[t])) == 1; t++) {
      while (mid < t && Disance(P[mid + 1], s) < Disance(P[mid + 1], t)) ++mid;
      if (mid == t) {
        R[s][t % n] = 0;
        S[s][t % n] = P[mid];
      } else {
        Point l = P[mid], r = P[mid + 1], m = (l + r) / 2;
        for (int w = 0; w < 60; w++) {
          if (Disance(m, s) < Disance(m, t))
            l = m;
          else
            r = m;
          m = (l + r) / 2;
        }
        R[s][t % n] = max(Disance(m, s), Disance(m, t));
        S[s][t % n] = m;
      }
    }
  }
  long double ans = 1e9;
  Point ans1, ans2;
  for (int s = 0; s < n; ++s) {
    for (int t = 0; t < n; ++t) {
      int s2 = (t + 1) % n;
      int t2 = (s + n - 1) % n;
      long double r = max(R[s][t], R[s2][t2]);
      if (r < ans) {
        ans = r;
        ans1 = S[s][t];
        ans2 = S[s2][t2];
      }
    }
  }
  printf("%.10lf\n", double(ans));
  printf("%.10lf %.10lf\n", double(ans1.x), double(ans1.y));
  printf("%.10lf %.10lf\n", double(ans2.x), double(ans2.y));
}
