#include <bits/stdc++.h>
using namespace std;
const int N3 = 1e3 + 15;
const int N4 = 1e4 + 15;
const int N5 = 1e5 + 15;
const int N6 = 1e6 + 15;
const int N7 = 1e7 + 15;
const int N8 = 1e8 + 15;
const int N9 = 1e9 + 15;
const double pi = acos(-1.0);
int dx[10] = {0, 1, -1, 1, -1, 2, -2, 2, -2};
int dy[10] = {0, 2, 2, -1, -1, 1, 1, -1, -1};
bool okx = 0, oky = 0;
int n, a[N5], l, x, r, y;
set<int> ans;
int bin(int l, int r, int val) { return (binary_search(a + l, a + r, val)); }
int main() {
  cin >> n >> l >> x >> y;
  for (int i = 1; i <= n; ++i) cin >> a[i];
  for (int i = 1; i <= n && a[i] + x <= l; ++i)
    if (bin(1, n + 1, a[i] + x)) {
      okx = true;
      break;
    }
  for (int i = 1; i <= n && a[i] + y <= l; ++i)
    if (bin(1, n + 1, a[i] + y)) {
      oky = true;
      break;
    }
  if (!okx && !oky) {
    for (int i = 1; i <= n; ++i) {
      if (a[i] + y <= l && bin(1, n + 1, a[i] + y - x)) {
        ans.insert(a[i] + y);
        break;
      }
    }
    if (ans.size() == 0) {
      for (int i = 1; i <= n; ++i) {
        if (a[i] - y >= 0 && bin(1, n + 1, a[i] - y + x)) {
          ans.insert(a[i] - y);
          break;
        }
      }
    }
    if (ans.size() == 0) {
      for (int i = 1; i <= n; ++i) {
        if (a[i] + x + y <= l && bin(1, n + 1, a[i] + x + y)) {
          ans.insert(a[i] + x);
          break;
        }
      }
    }
    if (ans.size() == 0) {
      ans.insert(x);
      ans.insert(y);
    }
  } else {
    if (!okx) ans.insert(x);
    if (!oky) ans.insert(y);
  }
  cout << ans.size() << "\n";
  for (set<int>::iterator it = ans.begin(); it != ans.end(); ++it)
    cout << *it << "\n";
  return 0;
}
