#include <bits/stdc++.h>
using namespace std;
int n, s1, s2;
int x[100001];
bool C(int v) {
  if (abs(s1 - s2) > v) return false;
  set<int> st;
  st.insert(s1);
  int pos = s2;
  for (int i = 0; i < n; i++) {
    if (st.size()) {
      st.insert(pos);
    }
    while (st.size() && abs(*st.begin() - x[i]) > v) {
      st.erase(*st.begin());
    }
    while (st.size() && abs(*st.rbegin() - x[i]) > v) {
      st.erase(*st.rbegin());
    }
    pos = x[i];
  }
  if (st.empty()) return false;
  return true;
}
int main(void) {
  scanf("%d%d%d", &n, &s1, &s2);
  for (int i = 0; i < n; i++) {
    scanf("%d", &x[i]);
  }
  int l = -1, r = 1000000007;
  while (l + 1 < r) {
    int mid = (l + r) / 2;
    if (C(mid))
      r = mid;
    else
      l = mid;
  }
  printf("%d\n", r);
  return 0;
}
