#include <bits/stdc++.h>
using namespace std;
int n, l, x, y;
vector<int> arr;
map<int, int> counter;
bool verify(int v) {
  if (counter.find(v) != counter.end()) return true;
  for (int i = 0; i < n; i++) {
    int z = arr[i] - v;
    if (counter.find(z) != counter.end()) return true;
    z = v + arr[i];
    if (counter.find(z) != counter.end()) return true;
  }
  return false;
}
int check() {
  for (int i = 0; i < n; i++) {
    int z = arr[i] + x;
    if (z <= l and counter.find(z) == counter.end()) {
      if (counter.find(z - y) != counter.end() or
          counter.find(z + y) != counter.end())
        return z;
    }
    z = arr[i] - x;
    if (z >= 0 and counter.find(z) == counter.end()) {
      if (counter.find(z - y) != counter.end() or
          counter.find(z + y) != counter.end())
        return z;
    }
  }
  for (int i = 0; i < n; i++) {
    int z = arr[i] + y;
    if (z <= l and counter.find(z) == counter.end()) {
      if (counter.find(z - x) != counter.end() or
          counter.find(z + x) != counter.end())
        return z;
    }
    z = arr[i] - y;
    if (z >= 0 and counter.find(z) == counter.end()) {
      if (counter.find(z - x) != counter.end() or
          counter.find(z + x) != counter.end())
        return z;
    }
  }
  for (int i = 0; i < arr.size(); i++) {
    int z = arr[i] - x;
    if (z >= 0 and counter.find(x) == counter.end() and z == y) return x;
    z = arr[i] + x;
    if (z <= l and counter.find(x) == counter.end() and z == y) return x;
    z = arr[i] - y;
    if (z >= 0 and counter.find(y) == counter.end() and z == x) return y;
    z = arr[i] + y;
    if (z <= l and counter.find(y) == counter.end() and z == x) return y;
  }
  return -1;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin >> n >> l >> x >> y;
  arr.resize(n);
  for (int &i : arr) cin >> i, counter[i]++;
  vector<int> ans;
  if (!verify(x)) ans.push_back(x);
  if (!verify(y)) ans.push_back(y);
  if (ans.size() == 0) {
    cout << ans.size() << endl;
    return 0;
  }
  int v = check();
  if (v != -1 and ans.size() == 2) {
    cout << 1 << endl << v << endl;
    return 0;
  }
  cout << ans.size() << endl;
  for (int i : ans) cout << i << " ";
  cout << endl;
  return 0;
}
