#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n, x, y, l;
  cin >> n >> l >> x >> y;
  set<long long> lin;
  vector<long long> a(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    lin.insert(a[i]);
  }
  int fl1 = 0;
  set<long long> boy;
  for (int i = 0; i < n; i++) {
    long long p1 = a[i] - x;
    long long p2 = a[i] + x;
    if (p1 >= 0) {
      if (lin.find(p1) != lin.end()) fl1 = 1;
      boy.insert(p1);
    }
    if (p2 <= l) {
      if (lin.find(p2) != lin.end()) fl1 = 1;
      boy.insert(p2);
    }
  }
  int fl2 = 0;
  set<long long> girl;
  for (int i = 0; i < n; i++) {
    long long p1 = a[i] - y;
    long long p2 = a[i] + y;
    if (p1 >= 0) {
      if (lin.find(p1) != lin.end()) fl2 = 1;
      girl.insert(p1);
    }
    if (p2 <= l) {
      if (lin.find(p2) != lin.end()) fl2 = 1;
      girl.insert(p2);
    }
  }
  if ((fl1 == 0) && (fl2 == 1)) {
    set<long long>::iterator it = boy.begin();
    cout << 1 << endl << *it << endl;
    return 0;
  }
  if ((fl1 == 1) && (fl2 == 0)) {
    set<long long>::iterator it = girl.begin();
    cout << 1 << endl << *it << endl;
    return 0;
  }
  if ((fl1 == 1) && (fl2 == 1)) {
    cout << 0 << endl;
    return 0;
  }
  for (set<long long>::iterator it = boy.begin(); it != boy.end(); ++it) {
    if (girl.find(*it) != girl.end()) {
      cout << 1 << endl << *it << endl;
      return 0;
    }
  }
  cout << 2 << endl;
  set<long long>::iterator it = girl.begin();
  cout << *it << " ";
  set<long long>::iterator it2 = boy.begin();
  cout << *it2 << endl;
  return 0;
}
