#include <bits/stdc++.h>
using namespace std;
const int N = 110000;
int i, j, k, l, m, n, o, p, x, y, L, a[N];
map<int, bool> F;
inline void Init() {
  cin >> n >> L >> x >> y;
  F.clear();
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    F[a[i]] = 1;
  }
}
inline void Solve() {
  int isx, isy, aj, ans, Find;
  isx = isy = 0;
  for (i = 1; i <= n; i++) {
    aj = a[i] - x;
    if (F[aj]) isx = 1;
    aj = a[i] + x;
    if (F[aj]) isx = 1;
    aj = a[i] - y;
    if (F[aj]) isy = 1;
    aj = a[i] + y;
    if (F[aj]) isy = 1;
  }
  if (isx && isy)
    puts("0");
  else if (isx) {
    puts("1");
    printf("%d\n", y);
  } else if (isy) {
    puts("1");
    printf("%d\n", x);
  } else {
    Find = 0;
    for (i = 1; i <= n; i++) {
      if (a[i] + x <= L) {
        isy = 0;
        o = a[i] + x;
        aj = o + y;
        if (F[aj]) isy = 1;
        aj = o - y;
        if (F[aj]) isy = 1;
        if (isy) {
          Find = 1;
          ans = o;
          break;
        }
      }
      if (a[i] - x >= 0) {
        isy = 0;
        o = a[i] - x;
        aj = o + y;
        if (F[aj]) isy = 1;
        aj = o - y;
        if (F[aj]) isy = 1;
        if (isy) {
          Find = 1;
          ans = o;
          break;
        }
      }
    }
    if (Find) {
      puts("1");
      printf("%d\n", ans);
    } else {
      puts("2");
      printf("%d %d\n", x, y);
    }
  }
}
int main() {
  Init();
  Solve();
  return 0;
}
