/******************************
* author : @marvinthang *
* date : 26 / 01 / 2022 *
******************************/
#include <bits/stdc++.h>
using namespace std;
#define superspeed ios_base::sync_with_stdio(false); cin.tie(nullptr); //cout.tie(nullptr);
#define file(name) if (fopen (name".inp", "r") ) { freopen (name".inp", "r", stdin); freopen (name".out", "w", stdout); }
template < class U, class V> ostream & operator << ( ostream& out, const pair< U, V> & p) { return out << '(' << p.first << ", " << p.second << ')' ; }
template < class T> ostream & operator << ( ostream & out, const vector< T> & vt) { out << '{' ; for ( size_t i = 0 ; i + 1 < vt.size ( ) ; i++ ) out << vt[ i] << ", " ; if ( ! vt.empty ( ) ) out << vt.back ( ) ; return out << '}' ; }
const int MOD = 1e9 + 7 ;
const double PI = 3.1415926535897932384626433832795 ; // acos(-1.0); atan(-1.0);
const int dir[ ] = { 0 , 1 , 0 , - 1 , 0 } ; // {0, 1, 1, -1, -1, 1, 0, -1, 0};
const long long oo = 1e18 ;
const int MAX = 1e5 + 5 ;
const int LOG = 20 ;
int N, pos[ MAX] , mi[ MAX] [ LOG] , ma[ MAX] [ LOG] , lg2[ MAX] ;
int F[ MAX] ;
int dist( int a, int b) {
int res = a - b;
if ( res < 0 ) return - res;
return res;
}
void rmq( void ) {
for ( int i = 1 ; i <= N; ++ i) {
mi[ i] [ 0 ] = ma[ i] [ 0 ] = pos[ i] ;
lg2[ i] = lg2[ i - 1 ] ;
while ( 1 << lg2[ i] <= i) ++ lg2[ i] ; -- lg2[ i] ;
}
for ( int k = 1 ; k < LOG; ++ k) {
for ( int i = 1 ; i + ( 1 << k) - 1 <= N; ++ i) {
mi[ i] [ k] = min( mi[ i] [ k - 1 ] , mi[ i + ( 1 << k - 1 ) ] [ k - 1 ] ) ;
ma[ i] [ k] = max( ma[ i] [ k - 1 ] , ma[ i + ( 1 << k - 1 ) ] [ k - 1 ] ) ;
}
}
}
int getMin( int l, int r) {
assert ( l <= r) ;
int k = lg2[ r - l + 1 ] ;
return min( mi[ l] [ k] , mi[ r - ( 1 << k) + 1 ] [ k] ) ;
}
int getMax( int l, int r) {
assert ( l <= r) ;
int k = lg2[ r - l + 1 ] ;
return max( ma[ l] [ k] , ma[ r - ( 1 << k) + 1 ] [ k] ) ;
}
bool check( int d) {
memset ( F, 0 , sizeof ( F) ) ;
F[ 1 ] = 1 ; F[ 2 ] = - 1 ;
for ( int i = 1 ; i < N; ++ i) {
F[ i] + = F[ i - 1 ] ;
if ( ! F[ i] ) return false ;
// int tmp = i;
int l = i, r = N;
while ( l <= r) {
int mid = l + r >> 1 ;
if ( dist( getMin( i, mid) , pos[ i] ) <= d && dist( getMax( i, mid) , pos[ i] ) <= d) l = mid + 1 ;
else r = mid - 1 ;
}
// while (tmp <= N && dist(pos[tmp], pos[i]) <= d) ++tmp; --tmp;
++ F[ i + 1 ] ; -- F[ r + 1 ] ;
}
return F[ N] + F[ N - 1 ] ;
}
int main( void ) {
superspeed;
file( "vnuoi22_post" ) ;
cin >> N; N + = 2 ;
for ( int i = 1 ; i <= N; ++ i) cin >> pos[ i] ;
rmq( ) ;
int l = dist( pos[ 1 ] , pos[ 2 ] ) , r = 1e9 ;
while ( l <= r) {
int mid = l + r >> 1 ;
if ( check( mid) ) {
r = mid - 1 ;
} else l = mid + 1 ;
}
cout << l << '\n ' ;
return 0 ;
}
LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqICAgIGF1dGhvciA6IEBtYXJ2aW50aGFuZyAgICAqCiogICAgZGF0ZSA6IDI2IC8gMDEgLyAyMDIyICAgICoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSAgc3VwZXJzcGVlZCAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUobnVsbHB0cik7IC8vY291dC50aWUobnVsbHB0cik7CiNkZWZpbmUgIGZpbGUobmFtZSkgIGlmIChmb3BlbiAobmFtZSIuaW5wIiwgInIiKSApIHsgZnJlb3BlbiAobmFtZSIuaW5wIiwgInIiLCBzdGRpbik7IGZyZW9wZW4gKG5hbWUiLm91dCIsICJ3Iiwgc3Rkb3V0KTsgfQoKdGVtcGxhdGUgPGNsYXNzIFUsIGNsYXNzIFY+IG9zdHJlYW0gJiBvcGVyYXRvciA8PCAob3N0cmVhbSYgb3V0LCBjb25zdCBwYWlyPFUsIFY+ICZwKSB7IHJldHVybiBvdXQgPDwgJygnIDw8IHAuZmlyc3QgPDwgIiwgIiA8PCBwLnNlY29uZCA8PCAnKSc7IH0KdGVtcGxhdGUgPGNsYXNzIFQ+IG9zdHJlYW0gJiBvcGVyYXRvciA8PCAob3N0cmVhbSAmb3V0LCBjb25zdCB2ZWN0b3I8VD4gJnZ0KSB7IG91dCA8PCAneyc7IGZvciAoc2l6ZV90IGkgPSAwOyBpICsgMSA8IHZ0LnNpemUoKTsgaSsrKSBvdXQgPDwgdnRbaV0gPDwgIiwgIjsgaWYgKCF2dC5lbXB0eSgpKSBvdXQgPDwgdnQuYmFjaygpOyByZXR1cm4gb3V0IDw8ICd9JzsgfQoKY29uc3QgCQlpbnQgTU9EID0gMWU5ICsgNzsKY29uc3QgICAgIGRvdWJsZSBQSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDYyNjQzMzgzMjc5NTsgLy8gYWNvcygtMS4wKTsgYXRhbigtMS4wKTsKY29uc3QgICAgIGludCBkaXJbXSA9IHswLCAxLCAwLCAtMSwgMH07IC8vIHswLCAxLCAxLCAtMSwgLTEsIDEsIDAsIC0xLCAwfTsKY29uc3QgIGxvbmcgbG9uZyBvbyA9IDFlMTg7CmNvbnN0ICAgICAgIGludCBNQVggPSAxZTUgKyA1Owpjb25zdCAJCWludCBMT0cgPSAyMDsKCmludCBOLCBwb3NbTUFYXSwgbWlbTUFYXVtMT0ddLCBtYVtNQVhdW0xPR10sIGxnMltNQVhdOwppbnQgRltNQVhdOwoKaW50IGRpc3QoaW50IGEsIGludCBiKSB7CiAgICBpbnQgcmVzID0gYSAtIGI7CiAgICBpZiAocmVzIDwgMCkgcmV0dXJuIC1yZXM7CiAgICByZXR1cm4gcmVzOwp9Cgp2b2lkIHJtcSh2b2lkKSB7Cglmb3IgKGludCBpID0gMTsgaSA8PSBOOyArK2kpIHsKCQltaVtpXVswXSA9IG1hW2ldWzBdID0gcG9zW2ldOwoJCWxnMltpXSA9IGxnMltpIC0gMV07CgkJd2hpbGUgKDEgPDwgbGcyW2ldIDw9IGkpICsrbGcyW2ldOyAtLWxnMltpXTsKCX0KCWZvciAoaW50IGsgPSAxOyBrIDwgTE9HOyArK2spIHsKCQlmb3IgKGludCBpID0gMTsgaSArICgxIDw8IGspIC0gMSA8PSBOOyArK2kpIHsKCQkJbWlbaV1ba10gPSBtaW4obWlbaV1bayAtIDFdLCBtaVtpICsgKDEgPDwgayAtIDEpXVtrIC0gMV0pOwoJCQltYVtpXVtrXSA9IG1heChtYVtpXVtrIC0gMV0sIG1hW2kgKyAoMSA8PCBrIC0gMSldW2sgLSAxXSk7CgkJfQoJfQp9CgppbnQgZ2V0TWluKGludCBsLCBpbnQgcikgewoJYXNzZXJ0KGwgPD0gcik7CglpbnQgayA9IGxnMltyIC0gbCArIDFdOwoJcmV0dXJuIG1pbihtaVtsXVtrXSwgbWlbciAtICgxIDw8IGspICsgMV1ba10pOwp9CgppbnQgZ2V0TWF4KGludCBsLCBpbnQgcikgewoJYXNzZXJ0KGwgPD0gcik7CglpbnQgayA9IGxnMltyIC0gbCArIDFdOwoJcmV0dXJuIG1heChtYVtsXVtrXSwgbWFbciAtICgxIDw8IGspICsgMV1ba10pOwp9Cgpib29sIGNoZWNrKGludCBkKSB7CgltZW1zZXQoRiwgMCwgc2l6ZW9mKEYpKTsKCUZbMV0gPSAxOyBGWzJdID0gLTE7Cglmb3IgKGludCBpID0gMTsgaSA8IE47ICsraSkgewoJCUZbaV0gKz0gRltpIC0gMV07CgkJaWYgKCFGW2ldKSByZXR1cm4gZmFsc2U7CgkJLy8gaW50IHRtcCA9IGk7CgkJaW50IGwgPSBpLCByID0gTjsKCQl3aGlsZSAobCA8PSByKSB7CgkJCWludCBtaWQgPSBsICsgciA+PiAxOwoJCQlpZiAoZGlzdChnZXRNaW4oaSwgbWlkKSwgcG9zW2ldKSA8PSBkICYmIGRpc3QoZ2V0TWF4KGksIG1pZCksIHBvc1tpXSkgPD0gZCkgbCA9IG1pZCArIDE7CgkJCWVsc2UgciA9IG1pZCAtIDE7CgkJfQoJCS8vIHdoaWxlICh0bXAgPD0gTiAmJiBkaXN0KHBvc1t0bXBdLCBwb3NbaV0pIDw9IGQpICsrdG1wOyAtLXRtcDsKCQkrK0ZbaSArIDFdOyAtLUZbciArIDFdOwoJfQoJcmV0dXJuIEZbTl0gKyBGW04gLSAxXTsKfQoKaW50IG1haW4odm9pZCkgewogICAgc3VwZXJzcGVlZDsKICAgIGZpbGUoInZudW9pMjJfcG9zdCIpOwogICAgY2luID4+IE47IE4gKz0gMjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IE47ICsraSkgY2luID4+IHBvc1tpXTsKICAgIHJtcSgpOwogICAgaW50IGwgPSBkaXN0KHBvc1sxXSwgcG9zWzJdKSwgciA9IDFlOTsKCXdoaWxlIChsIDw9IHIpIHsKCQlpbnQgbWlkID0gbCArIHIgPj4gMTsKCQlpZiAoY2hlY2sobWlkKSkgewoJCQlyID0gbWlkIC0gMTsKCQl9IGVsc2UgbCA9IG1pZCArIDE7Cgl9Cgljb3V0IDw8IGwgPDwgJ1xuJzsKICAgIHJldHVybiAwOwp9Cg==