#include <bits/stdc++.h>
using namespace std;
int x = 1000001;
bool prime[1000001];
void sev() {
  for (int i = 2; i * i <= x; i++) {
    for (int j = i * 2; j <= x; j += i) {
      prime[j] = true;
    }
  }
}
long long gcd(long long a, long long b) {
  if (b == 0) {
    return a;
  } else {
    gcd(b, a % b);
  }
}
int main() {
  long long n, l;
  cin >> n >> l;
  long long x[n];
  for (int i = 0; i < n; i++) {
    cin >> x[i];
  }
  long long c = LLONG_MIN;
  sort(x, x + n);
  for (int i = 0; i < n - 1; i++) {
    if (x[i] != x[i + 1]) {
      c = max(c, x[i + 1] - x[i]);
    }
  }
  long long d = max(x[0], l - x[n - 1]);
  if (d > (c / 2.0)) {
    cout << d << endl;
  } else {
    cout << fixed << setprecision(5) << (c / 2.0) << endl;
  }
  return 0;
}
