#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline T POW(T B, T P) {
  if (P == 0) return 1;
  if (P & 1)
    return B * POW(B, P - 1);
  else
    return SQR(POW(B, P / 2));
}
template <typename T>
inline T BigMod(T b, T p, T m) {
  if (p == 0) return 1;
  if (p % 2 == 0) {
    T s = BigMod(b, p / 2, m);
    return ((s % m) * (s % m)) % m;
  }
  return ((b % m) * (BigMod(b, p - 1, m) % m)) % m;
}
template <typename T>
inline T ModInv(T b, T m) {
  return BigMod(b, m - 2, m);
}
template <typename T>
inline T ABS(T a) {
  if (a < 0)
    return -a;
  else
    return a;
}
template <typename T>
inline T gcd(T a, T b) {
  if (a < 0) return gcd(-a, b);
  if (b < 0) return gcd(a, -b);
  return (b == 0) ? a : gcd(b, a % b);
}
template <typename T>
inline T lcm(T a, T b) {
  if (a < 0) return lcm(-a, b);
  if (b < 0) return lcm(a, -b);
  return a * (b / gcd(a, b));
}
long long int n, l, x, y, arr[100005];
int main() {
  scanf("%I64d%I64d", &n, &l);
  scanf("%I64d%I64d", &x, &y);
  long long int p;
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &arr[i]);
    if (x != -1) {
      p = (lower_bound(arr + 1, arr + 1 + i, arr[i] - x) - arr);
      if (arr[p] == arr[i] - x) {
        x = -1;
      }
    }
    if (y != -1) {
      p = (lower_bound(arr + 1, arr + 1 + i, arr[i] - y) - arr);
      if (arr[p] == arr[i] - y) {
        y = -1;
      }
    }
  }
  if (x == -1 && y == -1) {
    cout << 0 << endl;
    return 0;
  }
  if (x == -1 || y == -1) {
    if (x == -1)
      cout << 1 << endl << y << endl;
    else
      cout << 1 << endl << x << endl;
    return 0;
  }
  long long int xx, yy, ch = 0, ans;
  for (int i = 1; i <= n; i++) {
    xx = arr[i] + x;
    if (ch == 0 && xx <= l) {
      yy = xx + y;
      p = (lower_bound(arr + 1, arr + 1 + n, yy) - arr);
      if (arr[p] == yy) {
        ch = 1;
        ans = xx;
      } else {
        yy = xx - y;
        p = (lower_bound(arr + 1, arr + 1 + n, yy) - arr);
        if (arr[p] == yy) {
          ch = 1;
          ans = xx;
        }
      }
    }
    xx = arr[i] - x;
    if (ch == 0 && xx >= 0) {
      yy = xx + y;
      p = (lower_bound(arr + 1, arr + 1 + n, yy) - arr);
      if (arr[p] == yy) {
        ch = 1;
        ans = xx;
      } else {
        yy = xx - y;
        if (yy >= 0) {
          p = (lower_bound(arr + 1, arr + 1 + n, yy) - arr);
          if (arr[p] == yy) {
            ch = 1;
            ans = xx;
          }
        }
      }
    }
  }
  if (ch == 1)
    cout << 1 << endl << ans << endl;
  else {
    cout << 2 << endl << x << " " << y << endl;
  }
  return 0;
}
