#include <bits/stdc++.h>
int inp() {
  char c = getchar();
  while (c < '0' || c > '9') c = getchar();
  int sum = 0;
  while (c >= '0' && c <= '9') {
    sum = sum * 10 + c - '0';
    c = getchar();
  }
  return sum;
}
int x[200010], s1, s2, n;
bool check(int lim) {
  int l = -2147483647;
  int r = 2147483647;
  for (int i = n; i >= 1; i--) {
    if (x[i] >= l && x[i] <= r) {
      l = x[i] - lim;
      r = x[i] + lim;
    } else {
      l = std::max(l, x[i] - lim);
      r = std::min(r, x[i] + lim);
    }
  }
  return (l <= s1 && s1 <= r) || (l <= s2 && s2 <= r);
}
int main() {
  n = inp();
  s1 = inp();
  s2 = inp();
  int l = abs(s1 - s2);
  int r = 1e9;
  for (int i = 1; i <= n; i++) {
    x[i] = inp();
    if (x[i] == x[i - 1]) {
      i--;
      n--;
    }
  }
  while (l < r) {
    int mid = (l + r) >> 1;
    if (check(mid))
      r = mid;
    else
      l = mid + 1;
  }
  printf("%d\n", l);
}
