#include <bits/stdc++.h>
using namespace std;
const double ESP = 1e-9;
const int N = 2e5 + 5;
int arr[N], n;
bool canCover(double d) {
  int used = 0;
  double lastcoverd = 0.0;
  for (int i = 0; i < n; ++i) {
    if (arr[i] > lastcoverd) {
      lastcoverd = arr[i] + (2 * d);
      used++;
    }
  }
  return used <= 3;
}
double binareySearch() {
  double lo = 0, hi = 2e9 + 5, mid;
  while (hi - lo > ESP) {
    mid = lo + (hi - lo) / 2;
    if (canCover(mid)) {
      hi = mid;
    } else {
      lo = mid;
    }
  }
  return hi;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", arr + i);
  }
  sort(arr, arr + n);
  double d = binareySearch();
  printf("%.7f\n", d);
  int used = 0;
  double lastcoverd = 0.0;
  for (int i = 0; i < n; ++i) {
    if (arr[i] - lastcoverd > ESP) {
      lastcoverd = arr[i] + (2 * d);
      printf("%.7f ", arr[i] + d);
      used++;
    }
  }
  while (used < 3) {
    printf("%.7f ", 0.0);
    used++;
  }
  printf("\n");
  return 0;
}
