#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
int s1, s2, n, a[maxn];
bool check(int x) {
  set<int> st;
  if (abs(s1 - s2) > x) return false;
  st.insert(s1);
  st.insert(s2);
  for (int i = 1; i <= n; i++) {
    while (st.size() && (*st.begin()) < a[i] - x) st.erase(st.begin());
    while (st.size() && (*st.rbegin()) > a[i] + x) st.erase(*st.rbegin());
    if (st.size() == 0) return false;
    st.insert(a[i]);
  }
  return true;
}
int main() {
  scanf("%d %d %d", &n, &s1, &s2);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  int l = 0;
  int r = 1e9;
  int sr, ret = -1;
  while (l <= r) {
    sr = (l + r) / 2;
    if (check(sr)) {
      r = sr - 1;
      ret = sr;
    } else
      l = sr + 1;
  }
  printf("%d\n", ret);
  return 0;
}
