#include <bits/stdc++.h>
using namespace std;
const double ESP = 1e-9;
const int N = 2e5 + 1;
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 bs() {
  double low = 0, high = 2e9 + 1, mid;
  while (high - low > ESP) {
    mid = low + (high - low) / 2;
    if (canCover(mid)) {
      high = mid;
    } else {
      low = mid;
    }
  }
  return high;
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%d", arr + i);
  }
  sort(arr, arr + n);
  double d = bs();
  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;
}
