#include <bits/stdc++.h>
using namespace std;
const int maxn = 200005;
set<int> S;
int n, a[maxn], ans;
bool check(int lim) {
  if (abs(a[1] - a[2]) > lim) return false;
  S.clear();
  S.insert(a[1]);
  for (int i = 3; i <= n + 2; i++) {
    S.insert(a[i - 1]);
    while (!S.empty() && abs(a[i] - (*S.begin())) > lim) S.erase(*S.begin());
    while (!S.empty() && abs(a[i] - (*S.rbegin())) > lim) S.erase(*S.rbegin());
    if (S.empty()) return false;
  }
  return true;
}
int main() {
  scanf("%d%d%d", &n, &a[1], &a[2]);
  for (int i = 3; i <= n + 2; i++) scanf("%d", &a[i]);
  int L = 0, R = 1e9;
  while (L <= R) {
    int mid = (L + R) >> 1;
    if (check(mid))
      R = mid - 1, ans = mid;
    else
      L = mid + 1;
  }
  check(1);
  printf("%d\n", ans);
}
