#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e5 + 4;
int n, l, x, y, a[MAXN], xf = 0, yf = 0, f = -1;
bool bs(int lo, int hi, int c) {
  int mid;
  while (lo < hi) {
    mid = (lo + hi) / 2;
    if (a[mid] >= c)
      hi = mid;
    else
      lo = mid + 1;
  }
  return (lo != n && a[lo] == c);
}
int main() {
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) {
    if (bs(0, n, x + a[i])) xf = 1;
    if (bs(0, n, y + a[i])) yf = 1;
  }
  if (!xf && !yf) {
    for (int i = 0; i < n; i++) {
      if (a[i] + x <= l) {
        if (bs(0, n, a[i] + x - y) || bs(0, n, a[i] + x + y)) {
          f = a[i] + x;
          break;
        }
      }
      if (a[i] - x >= 0) {
        if (bs(0, n, a[i] - x - y) || bs(0, n, a[i] - x + y)) {
          f = a[i] - x;
          break;
        }
      }
    }
    for (int i = 0; i < n; i++) {
      if (a[i] + y <= l) {
        if (bs(0, n, a[i] + y - x) || bs(0, n, a[i] + y + x)) {
          f = a[i] + y;
          break;
        }
      }
      if (a[i] - y >= 0) {
        if (bs(0, n, a[i] - y - x) || bs(0, n, a[i] - y + x)) {
          f = a[i] - y;
          break;
        }
      }
    }
    if (f != -1)
      cout << 1 << endl << f;
    else
      cout << 2 << endl << x << ' ' << y;
  } else if (!xf)
    cout << 1 << endl << x;
  else if (!yf)
    cout << 1 << endl << y;
  else
    cout << 0;
  return 0;
}
