#include <bits/stdc++.h>
using namespace std;
const int maxn = 100 * 1000 + 100;
long long a[maxn];
set<long long> s;
vector<int> v;
void f();
int main() {
  long long n, l, x, y, siz;
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; i++) cin >> a[i];
  int isx = 0, isy = 0;
  for (int i = 0; i < n; i++) s.insert(a[i]);
  for (int i = 0; i < n; i++) {
    if (a[i] - x >= 0) {
      siz = s.size();
      s.insert(a[i] - x);
      if (siz == s.size()) isx = 1;
    }
  }
  s.clear();
  for (int i = 0; i < n; i++) s.insert(a[i]);
  for (int i = 0; i < n; i++) {
    if (a[i] + x <= l) {
      siz = s.size();
      s.insert(a[i] + x);
      if (siz == s.size()) isx = 1;
    }
  }
  s.clear();
  for (int i = 0; i < n; i++) s.insert(a[i]);
  for (int i = 0; i < n; i++) {
    if (a[i] - y >= 0) {
      siz = s.size();
      s.insert(a[i] - y);
      if (siz == s.size()) isy = 1;
    }
  }
  s.clear();
  for (int i = 0; i < n; i++) s.insert(a[i]);
  for (int i = 0; i < n; i++) {
    if (a[i] + y <= l) {
      siz = s.size();
      s.insert(a[i] + y);
      if (siz == s.size()) isy = 1;
    }
  }
  s.clear();
  if (isx == 1 && isy == 1) {
    cout << 0 << endl;
    exit(0);
  }
  long long ind = -1;
  for (int i = 0; i < n; i++) {
    if (a[i] + x <= l) s.insert(a[i] + x);
    if (a[i] - x >= 0) s.insert(a[i] - x);
  }
  for (int i = 0; i < n; i++) {
    if (a[i] - y >= 0) {
      siz = s.size();
      s.insert(a[i] - y);
      if (siz == s.size()) ind = a[i] - y;
    }
  }
  s.clear();
  for (int i = 0; i < n; i++) {
    if (a[i] + x <= l) s.insert(a[i] + x);
    if (a[i] - x >= 0) s.insert(a[i] - x);
  }
  for (int i = 0; i < n; i++) {
    if (a[i] + y <= l) {
      siz = s.size();
      s.insert(a[i] + y);
      if (siz == s.size()) ind = a[i] + y;
    }
  }
  s.clear();
  if (ind != -1)
    cout << 1 << '\n' << ind << endl;
  else if (isx)
    cout << 1 << '\n' << y << endl;
  else if (isy)
    cout << 1 << '\n' << x << endl;
  else
    cout << 2 << '\n' << x << ' ' << y << endl;
  cin >> n;
}
