#include <iostream>
#include<vector>
#include<algorithm>
#include<iomanip>
using namespace std;
/*解题思路:用vector容器存储路灯的坐标并排序,
  计算路灯间距离的一半以及最左、最右侧路灯与边界的距离,
  照明最短距离为三者中的最大值
  注意:输出时保留两位小数可以使用 <iomanip> 头文件中的 fixed控制浮点数的输出格式
  以及setprecision(n)来控制小数位数。*/
int main() {
    int n,I;
    while (cin>>n>>I) {
        vector<int>v(n);
        for(int i=0;i<n;i++) cin>>v[i];
        sort(v.begin(),v.end());
        double maxGap =0;
        for(int i =0;i<n-1;i++){
            maxGap = max(maxGap,(double)v[i+1]-v[i]);   //计算路灯之间的最大距离
        }
        double leftGap = v[0];          //最左侧路灯到边界的距离
        double rightGap = I - v[n-1];   //最右侧路灯到边界的距离
        double minGap = max(maxGap/2,max(leftGap,rightGap));   //计算路灯最短照明距离
        cout<<fixed<<setprecision(2)<<minGap<<endl;
    }
    return 0;
}
// 64 位输出请用 printf("%lld")