#include <bits/stdc++.h>
using namespace std;
bool left(vector<int> &x, vector<int> &lft, int pos, int rad){
int l = -1, r = pos;
while(r - l > 1){
int mid = (r + l) / 2;
if(x[mid] >= x[pos] - rad)r = mid;
else l = mid;
}
if(r == pos)return false;
if(lft[r] > rad - 1)return false;
return true;
}
bool right(vector<int> &x, vector<int> &rt, int pos, int rad){
int l = pos, r = x.size();
while(r - l > 1){
int mid = (r + l) / 2;
if(x[mid] <= x[pos] + rad)l = mid;
else r = mid;
}
if(l == pos)return false;
if(rt[l] > rad - 1)return false;
return true;
}
bool enough(vector<int> &x, vector<int> &lft, vector<int> &rt, double rad){
int p1 = -1, r = lft.size();
while(r - p1 > 1){
int mid = (r + p1) / 2;
if(lft[mid] <= rad - 1)p1 = mid;
else r = mid;
}
int l = -1, p2 = rt.size();
while(p2 - l > 1){
int mid = (p2 + l) / 2;
if(rt[mid] > rad - 1)l = mid;
else p2 = mid;
}
return x[p2] - x[p1] <= 2 * rad;
}
int main() {
int n;
cin >> n;
vector<int> x(n);
vector<int> lft(n), rt(n);
for(int i = 0; i < n; ++i)cin >> x[i];
sort(x.begin(), x.end());
for(int i = 1; i < n; ++i){
int l = 0, r = 1e10;
while(r - l > 1){
int mid = (r + l) / 2;
if(left(x, lft, i, mid))r = mid;
else l = mid;
}
lft[i] = r;
}
for(int i = n - 2; i >= 0; --i){
int l = 0, r = 1e10;
while(r - l > 1){
int mid = (r + l) / 2;
if(right(x, rt, i, mid))r = mid;
else l = mid;
}
rt[i] = r;
}
/*for(int i: lft)cout << i << " ";
cout << endl;
for(int i: rt)cout << i << " ";*/
int l = 0, r = 1e9;
while(r - l > 1){
double mid = int (r + l) / 2;
if(enough(x, lft, rt, mid))r = mid;
else l = mid;
}
cout<< fixed << setprecision(1);
double ans = r;
if(enough(x, lft, rt, r - 0.5))ans -= 0.5;
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBsZWZ0KHZlY3RvcjxpbnQ+ICZ4LCB2ZWN0b3I8aW50PiAmbGZ0LCBpbnQgcG9zLCBpbnQgcmFkKXsKCWludCBsID0gLTEsIHIgPSBwb3M7Cgl3aGlsZShyIC0gbCA+IDEpewoJCWludCBtaWQgPSAociArIGwpIC8gMjsKCQlpZih4W21pZF0gPj0geFtwb3NdIC0gcmFkKXIgPSBtaWQ7CgkJZWxzZSBsID0gbWlkOwoJfQoJaWYociA9PSBwb3MpcmV0dXJuIGZhbHNlOwoJaWYobGZ0W3JdID4gcmFkIC0gMSlyZXR1cm4gZmFsc2U7CglyZXR1cm4gdHJ1ZTsKfQoKYm9vbCByaWdodCh2ZWN0b3I8aW50PiAmeCwgdmVjdG9yPGludD4gJnJ0LCBpbnQgcG9zLCBpbnQgcmFkKXsKCWludCBsID0gcG9zLCByID0geC5zaXplKCk7Cgl3aGlsZShyIC0gbCA+IDEpewoJCWludCBtaWQgPSAociArIGwpIC8gMjsKCQlpZih4W21pZF0gPD0geFtwb3NdICsgcmFkKWwgPSBtaWQ7CgkJZWxzZSByID0gbWlkOwoJfQoJaWYobCA9PSBwb3MpcmV0dXJuIGZhbHNlOwoJaWYocnRbbF0gPiByYWQgLSAxKXJldHVybiBmYWxzZTsKCXJldHVybiB0cnVlOwp9Cgpib29sIGVub3VnaCh2ZWN0b3I8aW50PiAmeCwgdmVjdG9yPGludD4gJmxmdCwgdmVjdG9yPGludD4gJnJ0LCBkb3VibGUgcmFkKXsKICAgIGludCBwMSA9IC0xLCByID0gbGZ0LnNpemUoKTsKICAgIHdoaWxlKHIgLSBwMSA+IDEpewogICAgICAgIGludCBtaWQgPSAociArIHAxKSAvIDI7CiAgICAgICAgaWYobGZ0W21pZF0gPD0gcmFkIC0gMSlwMSA9IG1pZDsKICAgICAgICBlbHNlIHIgPSBtaWQ7CiAgICB9CiAgICBpbnQgbCA9IC0xLCBwMiA9IHJ0LnNpemUoKTsKICAgIHdoaWxlKHAyIC0gbCA+IDEpewogICAgICAgIGludCBtaWQgPSAocDIgKyBsKSAvIDI7CiAgICAgICAgaWYocnRbbWlkXSA+IHJhZCAtIDEpbCA9IG1pZDsKICAgICAgICBlbHNlIHAyID0gbWlkOwogICAgfQogICAgcmV0dXJuIHhbcDJdIC0geFtwMV0gPD0gMiAqIHJhZDsKfQoKaW50IG1haW4oKSB7CglpbnQgbjsKCWNpbiA+PiBuOwoJdmVjdG9yPGludD4geChuKTsKCXZlY3RvcjxpbnQ+IGxmdChuKSwgcnQobik7Cglmb3IoaW50IGkgPSAwOyBpIDwgbjsgKytpKWNpbiA+PiB4W2ldOwoJc29ydCh4LmJlZ2luKCksIHguZW5kKCkpOwoJZm9yKGludCBpID0gMTsgaSA8IG47ICsraSl7CgkJaW50IGwgPSAwLCByID0gMWUxMDsKCQl3aGlsZShyIC0gbCA+IDEpewoJCQlpbnQgbWlkID0gKHIgKyBsKSAvIDI7CgkJCWlmKGxlZnQoeCwgbGZ0LCBpLCBtaWQpKXIgPSBtaWQ7CgkJCWVsc2UgbCA9IG1pZDsKCQl9CgkJbGZ0W2ldID0gcjsKCX0KCWZvcihpbnQgaSA9IG4gLSAyOyBpID49IDA7IC0taSl7CgkJaW50IGwgPSAwLCByID0gMWUxMDsKCQl3aGlsZShyIC0gbCA+IDEpewoJCQlpbnQgbWlkID0gKHIgKyBsKSAvIDI7CgkJCWlmKHJpZ2h0KHgsIHJ0LCBpLCBtaWQpKXIgPSBtaWQ7CgkJCWVsc2UgbCA9IG1pZDsKCQl9CgkJcnRbaV0gPSByOwoJfQoJLypmb3IoaW50IGk6IGxmdCljb3V0IDw8IGkgPDwgIiAiOwoJY291dCA8PCBlbmRsOwoJZm9yKGludCBpOiBydCljb3V0IDw8IGkgPDwgIiAiOyovCglpbnQgbCA9IDAsIHIgPSAxZTk7Cgl3aGlsZShyIC0gbCA+IDEpewogICAgICAgIGRvdWJsZSBtaWQgPSBpbnQgKHIgKyBsKSAvIDI7CiAgICAgICAgaWYoZW5vdWdoKHgsIGxmdCwgcnQsIG1pZCkpciA9IG1pZDsKICAgICAgICBlbHNlIGwgPSBtaWQ7Cgl9Cgljb3V0PDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDEpOwoJZG91YmxlIGFucyA9IHI7CglpZihlbm91Z2goeCwgbGZ0LCBydCwgciAtIDAuNSkpYW5zIC09IDAuNTsKCWNvdXQgPDwgYW5zOwoJcmV0dXJuIDA7Cn0K