#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1e5;
int n, l, x, y;
int A[MAX_N];
vector<int> solve() {
  vector<int> v;
  int a[] = {x, y};
  for (int i = 0; i < 2; i++) {
    bool good = false;
    for (int j = 1; j < n && !good; j++) {
      if (binary_search(A, A + j, A[j] - a[i])) {
        good = true;
      }
    }
    if (!good) {
      v.push_back(a[i]);
    }
  }
  if (((int)(v).size()) <= 1) return v;
  for (int i = 0; i < n; i++) {
    if (binary_search(A, A + n, A[i] - x - y)) return vector<int>(1, A[i] - x);
    if (binary_search(A, A + n, A[i] - abs(x - y)) && A[i] + min(x, y) <= l)
      return vector<int>(1, A[i] + min(x, y));
    if (binary_search(A, A + n, A[i] + abs(x - y)) && A[i] - min(x, y) >= 0)
      return vector<int>(1, A[i] - min(x, y));
  }
  return v;
}
int main() {
  while (scanf("%d%d%d%d", &n, &l, &x, &y) != EOF) {
    for (int i = 0; i < n; i++) scanf("%d", A + i);
    vector<int> v(solve());
    printf("%d\n", ((int)(v).size()));
    for (int x : v) printf("%d ", x);
    puts("");
  }
  return 0;
}
