#include <bits/stdc++.h>
using namespace std;
vector<int> solve(bool, bool, vector<int>, vector<int>);
int main() {
  int n, l, x, y;
  cin >> n >> l >> x >> y;
  vector<int> a, retx, rety;
  for (int i = 0; i < n; ++i) {
    int x;
    cin >> x;
    a.push_back(x);
  }
  bool f1, f2;
  f1 = f2 = 0;
  for (int i = 0; i < n; ++i) {
    bool tmp = binary_search(a.begin(), a.end(), a[i] + x);
    if (tmp) f1 = 1;
    tmp = binary_search(a.begin(), a.end(), a[i] + y);
    if (tmp) f2 = 1;
  }
  if (f1 && f2) {
    cout << 0 << '\n';
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    if (!f1) {
      if (a[i] + x < l) retx.push_back(a[i] + x);
      if (a[i] - x > 0) retx.push_back(a[i] - x);
    }
    if (!f2) {
      if (a[i] + y < l) rety.push_back(a[i] + y);
      if (a[i] - y > 0) rety.push_back(a[i] - y);
    }
  }
  sort(rety.begin(), rety.end());
  sort(retx.begin(), retx.end());
  vector<int> ret = solve(f1, f2, retx, rety);
  cout << ret.size() << '\n';
  for (int i = 0; i < ret.size(); ++i) cout << ret[i] << ' ';
  cout << '\n';
  return 0;
}
vector<int> solve(bool f1, bool f2, vector<int> retx, vector<int> rety) {
  vector<int> ret;
  if (!f1 && !f2)
    for (int i = 0; i < retx.size(); ++i) {
      if (binary_search(rety.begin(), rety.end(), retx[i])) {
        ret.push_back(retx[i]);
        return ret;
      }
    }
  if (!f1) ret.push_back(retx[0]);
  if (!f2) ret.push_back(rety[0]);
  return ret;
}
