#include <bits/stdc++.h>
using namespace std;
template <typename T>
void afill(T *arr, int size, T val) {
  fill(arr, arr + size, val);
}
long long mod = 1e9 + 7;
double eps = 1e-9;
const int MAX_SIZE = 1e5;
int n, t, m, q, k;
int l, x, y;
int arr[1 << 17];
bool check(int pp, int xx) {
  if (pp - xx >= 0 && *lower_bound(arr, arr + n, pp - xx) == pp - xx)
    return true;
  if (pp + xx <= l && *lower_bound(arr, arr + n, pp + xx) == pp + xx)
    return true;
  return false;
}
bool check2(int p, int off) {
  if (p < 0 || p > l) return false;
  if (p + off < 0 || p + off > l) return false;
  return *lower_bound(arr, arr + n, p + off) == p + off;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; ++i) cin >> arr[i];
  bool fst = false, scd = false;
  for (int i = 0; i < n; ++i) {
    fst |= check(arr[i], x);
    scd |= check(arr[i], y);
  }
  if (fst & scd) {
    cout << 0 << '\n';
  } else if (scd) {
    cout << 1 << '\n' << x << '\n';
  } else if (fst) {
    cout << 1 << '\n' << y << '\n';
  } else {
    bool f = false;
    for (int i = 0; i < n && !f; ++i) {
      int pos = arr[i];
      if (check2(pos - x, y) || check2(pos - x, -y)) {
        cout << 1 << '\n' << pos - x << '\n';
        f = true;
      } else if (check2(pos + x, y) || check2(pos + x, -y)) {
        cout << 1 << '\n' << pos + x << '\n';
        f = true;
      }
    }
    if (!f) cout << 2 << '\n' << x << ' ' << y << '\n';
  }
  cin >> n;
}
