#include <bits/stdc++.h>
using namespace std;
bool check(vector<long> array, set<long> markers, long l) {
  for (int i = 0; i < array.size(); i++) {
    if (markers.count(array[i] - l)) return true;
  }
  return false;
}
int find(vector<long> array, set<long> markers, int x, int y) {
  for (int i = 0; i < array.size(); i++) {
    if (array[i] + x <= array[array.size() - 1] &&
        ((markers.count(array[i] + x + y)) ||
         (markers.count(array[i] + x - y))))
      return (array[i] + x);
    if (array[i] - x >= 0 && ((markers.count(array[i] - x + y)) ||
                              (markers.count(array[i] - x - y))))
      return (array[i] - x);
  }
  return -1;
}
int main() {
  long n, l, x, y;
  cin >> n >> l >> x >> y;
  vector<long> array;
  set<long> markers;
  for (int i = 0; i < n; i++) {
    long t;
    cin >> t;
    array.push_back(t);
    markers.insert(t);
  }
  bool ifx = check(array, markers, x);
  bool ify = check(array, markers, y);
  if (ifx && ify) {
    cout << "0";
  } else if (ifx && !ify) {
    cout << "1" << endl;
    cout << y;
  } else if (!ifx && ify) {
    cout << "1" << endl;
    cout << x;
  } else {
    int pos = find(array, markers, x, y);
    if (pos == -1) {
      cout << "2" << endl;
      cout << x << " " << y;
    } else {
      cout << "1" << endl;
      cout << pos;
    }
  }
  return 0;
}
