#include <bits/stdc++.h> // NeOWami
#include <numeric>
using namespace std;
#define ft first
#define sc second
#define int long long
using ull = unsigned long long;
using U = make_unsigned_t<long long>;
const int N = 1e5 + 5;
int n, L, R;
int a[N];
int ans, postmp, len;
ull maxLen = 0;
bool ckmax(ull &u, ull v) {
if (u < v) return u = v, 1;
return 0;
}
int half_diff(int l, int r) {
U diff = U(r) - U(l);
return (int)(diff >> 1);
}
ull getLen(int l, int r) {
return U(r) - U(l);
}
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("MAXDIS.inp")) {
freopen("MAXDIS.inp", "r", stdin);
freopen("MAXDIS.out", "w", stdout);
}
cin >> n >> L >> R;
for (int i = 1; i <= n; i++) cin >> a[i];
sort(a + 1, a + n + 1);
ans = R;
// L <= a[sta], a[en] <= R
int sta = lower_bound(a + 1, a + n + 1, L) - a, en = upper_bound(a + 1, a + n + 1, R) - a - 1;
// calc from a[en] -> R
if (en < n) {
// R kẹt ở giữa 2 a[X], a[Y]
len = half_diff(a[en], a[en + 1]);
postmp = max(L, min(R, max(a[en + 1] - len, a[en] + len)));
if (ckmax(maxLen, min(getLen(postmp, a[en + 1]), getLen(a[en], postmp)))) ans = postmp;
}
else {
// R nằm sau A[n];
if (ckmax(maxLen, R - a[n])) ans = R;
}
// calc from a[sta] -> a[en];
for (int i = en; i >= sta + 1; i--) {
if (ckmax(maxLen, half_diff(a[i - 1], a[i]))) ans = max(a[i] - maxLen, a[i - 1] + maxLen);
}
// calc from L -> a[sta]
if (sta > 1) {
// L kẹt ở giữa 2 a[X], a[Y]
len = half_diff(a[sta - 1], a[sta]);
postmp = min(R, max(L, max(a[sta] - len, a[sta - 1] + len)));
if (ckmax(maxLen, min(getLen(postmp, a[sta]), getLen(a[sta - 1], postmp)))) ans = postmp;
}
else {
// L bé hơn a[1];
if (ckmax(maxLen, a[1] - L)) ans = L;
}
cout << ans;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKI2luY2x1ZGUgPG51bWVyaWM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIGZ0IGZpcnN0CiNkZWZpbmUgc2Mgc2Vjb25kCiNkZWZpbmUgaW50IGxvbmcgbG9uZwp1c2luZyB1bGwgPSB1bnNpZ25lZCBsb25nIGxvbmc7CnVzaW5nIFUgPSBtYWtlX3Vuc2lnbmVkX3Q8bG9uZyBsb25nPjsKY29uc3QgaW50IE4gPSAxZTUgKyA1OwppbnQgbiwgTCwgUjsKaW50IGFbTl07CmludCBhbnMsIHBvc3RtcCwgbGVuOwp1bGwgbWF4TGVuID0gMDsKYm9vbCBja21heCh1bGwgJnUsIHVsbCB2KSB7CiAgICBpZiAodSA8IHYpIHJldHVybiB1ID0gdiwgMTsKICAgIHJldHVybiAwOyAKfQppbnQgaGFsZl9kaWZmKGludCBsLCBpbnQgcikgewogICAgVSBkaWZmID0gVShyKSAtIFUobCk7CiAgICByZXR1cm4gKGludCkoZGlmZiA+PiAxKTsKfQp1bGwgZ2V0TGVuKGludCBsLCBpbnQgcikgewogICAgcmV0dXJuIFUocikgLSBVKGwpOwp9CnNpZ25lZCBtYWluKCkgewogICAgY2luLnRpZShOVUxMKS0+c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGlmKGlmc3RyZWFtKCJNQVhESVMuaW5wIikpIHsKICAgICAgICBmcmVvcGVuKCJNQVhESVMuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiTUFYRElTLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGNpbiA+PiBuID4+IEwgPj4gUjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV07CiAgICBzb3J0KGEgKyAxLCBhICsgbiArIDEpOwogICAgYW5zID0gUjsKICAgIC8vIEwgPD0gYVtzdGFdLCBhW2VuXSA8PSBSCiAgICBpbnQgc3RhID0gbG93ZXJfYm91bmQoYSArIDEsIGEgKyBuICsgMSwgTCkgLSBhLCBlbiA9IHVwcGVyX2JvdW5kKGEgKyAxLCBhICsgbiArIDEsIFIpIC0gYSAtIDE7CiAgICAvLyBjYWxjIGZyb20gYVtlbl0gLT4gUgogICAgaWYgKGVuIDwgbikgewogICAgICAgIC8vIFIga+G6uXQg4bufIGdp4buvYSAyIGFbWF0sIGFbWV0KICAgICAgICBsZW4gPSBoYWxmX2RpZmYoYVtlbl0sIGFbZW4gKyAxXSk7CiAgICAgICAgcG9zdG1wID0gbWF4KEwsIG1pbihSLCBtYXgoYVtlbiArIDFdIC0gbGVuLCBhW2VuXSArIGxlbikpKTsKICAgICAgICBpZiAoY2ttYXgobWF4TGVuLCBtaW4oZ2V0TGVuKHBvc3RtcCwgYVtlbiArIDFdKSwgZ2V0TGVuKGFbZW5dLCBwb3N0bXApKSkpIGFucyA9IHBvc3RtcDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIC8vIFIgbuG6sW0gc2F1IEFbbl07CiAgICAgICAgaWYgKGNrbWF4KG1heExlbiwgUiAtIGFbbl0pKSBhbnMgPSBSOwogICAgfQoKICAgIC8vIGNhbGMgZnJvbSBhW3N0YV0gLT4gYVtlbl07CiAgICBmb3IgKGludCBpID0gZW47IGkgPj0gc3RhICsgMTsgaS0tKSB7CiAgICAgICAgaWYgKGNrbWF4KG1heExlbiwgaGFsZl9kaWZmKGFbaSAtIDFdLCBhW2ldKSkpIGFucyA9IG1heChhW2ldIC0gbWF4TGVuLCBhW2kgLSAxXSArIG1heExlbik7CiAgICB9CgogICAgLy8gY2FsYyBmcm9tIEwgLT4gYVtzdGFdCiAgICBpZiAoc3RhID4gMSkgewogICAgICAgIC8vIEwga+G6uXQg4bufIGdp4buvYSAyIGFbWF0sIGFbWV0KICAgICAgICBsZW4gPSBoYWxmX2RpZmYoYVtzdGEgLSAxXSwgYVtzdGFdKTsKICAgICAgICBwb3N0bXAgPSBtaW4oUiwgbWF4KEwsIG1heChhW3N0YV0gLSBsZW4sIGFbc3RhIC0gMV0gKyBsZW4pKSk7CiAgICAgICAgaWYgKGNrbWF4KG1heExlbiwgbWluKGdldExlbihwb3N0bXAsIGFbc3RhXSksIGdldExlbihhW3N0YSAtIDFdLCBwb3N0bXApKSkpIGFucyA9IHBvc3RtcDsKICAgIH0KICAgIGVsc2UgewogICAgICAgIC8vIEwgYsOpIGjGoW4gYVsxXTsKICAgICAgICBpZiAoY2ttYXgobWF4TGVuLCBhWzFdIC0gTCkpIGFucyA9IEw7CiAgICB9CiAgICBjb3V0IDw8IGFuczsKICAgIHJldHVybiAwOwp9Cg==