#include <bits/stdc++.h>
using namespace std;
long long n, l, x, y;
bool okx = false, oky = false;
bool f(const vector<long> &a, long long x) {
  return x <= a.back() && *lower_bound(a.begin(), a.end(), x) == x;
}
int main() {
  cin >> n >> l >> x >> y;
  vector<long> a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) {
    if (f(a, a[i] + x)) okx = true;
    if (f(a, a[i] + y)) oky = true;
  }
  if (okx && oky) {
    cout << 0 << endl;
    return 0;
  }
  if (okx) {
    cout << 1 << endl << y << endl;
    return 0;
  }
  if (oky) {
    cout << 1 << endl << x << endl;
    return 0;
  }
  for (int i = 0; i < n; i++) {
    if (f(a, a[i] + x + y)) {
      cout << 1 << endl << a[i] + x << endl;
      return 0;
    }
    if (f(a, a[i] + y - x)) {
      if (a[i] + y < l) {
        cout << 1 << endl << a[i] + y << endl;
        return 0;
      }
      if (a[i] - x > 0) {
        cout << 1 << endl << a[i] - x << endl;
        return 0;
      }
    }
  }
  cout << 2 << endl << x << " " << y << endl;
  return 0;
}
