#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000 + 10;
long long n, l, x, y;
long long a[maxn];
int main(int argc, char *argv[]) {
  cin >> n >> l >> x >> y;
  set<long long> s;
  for (int i = 1; i <= n; i++) {
    int t;
    scanf("%d", &t);
    a[i] = t;
    s.insert(a[i]);
  }
  bool xFound = false, yFound = false;
  for (int i = 1; i <= n; i++) {
    if (a[i] == x) xFound = true;
    if (a[i] == y) yFound = true;
    if (s.count(a[i] - x) || s.count(a[i] + x)) xFound = true;
    if (s.count(a[i] - y) || s.count(a[i] + y)) yFound = true;
  }
  if (xFound && yFound) {
    cout << 0 << endl;
    exit(0);
  }
  if (xFound) {
    cout << 1 << endl << y << endl;
    exit(0);
  }
  if (yFound) {
    cout << 1 << endl << x << endl;
    exit(0);
  }
  int ansBoth = -1;
  for (int i = 1; i <= n; i++) {
    if (a[i] + y <= l && (s.count(a[i] + y - x) || s.count(a[i] + y + x))) {
      ansBoth = a[i] + y;
      break;
    }
    if (a[i] - y >= 0 && (s.count(a[i] - y - x) || s.count(a[i] - y + x))) {
      ansBoth = a[i] - y;
      break;
    }
  }
  if (ansBoth != -1) {
    cout << 1 << endl << ansBoth << endl;
    exit(0);
  }
  cout << 2 << endl << x << " " << y << endl;
  return 0;
}
