#include <bits/stdc++.h>
const double Pi = acos(-1.0);
using namespace std;
const int maxN = 100005;
int n, s1, s2;
int x[maxN];
bool check(int d) {
  if (abs(s1 - s2) > d) return false;
  set<int> nxt;
  nxt.insert(s1);
  nxt.insert(s2);
  for (int i = 0; i < n; i++) {
    while (!nxt.empty() && abs((*nxt.begin()) - x[i]) > d)
      nxt.erase(nxt.begin());
    while (!nxt.empty() && abs((*nxt.rbegin()) - x[i]) > d)
      nxt.erase(--nxt.end());
    if (nxt.empty()) return false;
    nxt.insert(x[i]);
  }
  return true;
}
int main(int argc, char** argv) {
  scanf("%d %d %d", &n, &s1, &s2);
  for (int i = 0; i < n; i++) scanf("%d", &x[i]);
  int l = 0, r = 1000000005, m;
  while (l < r) {
    m = (l + r) >> 1;
    if (!check(m))
      l = m + 1;
    else
      r = m;
  }
  printf("%d\n", r);
  return 0;
}
