#include <bits/stdc++.h>
using namespace std;
void open() {
  freopen("jumps.in", "r", stdin);
  freopen("jumps.out", "w", stdout);
}
int n, l, x, y;
int ke[100010];
map<int, bool> mat;
bool vx, vy;
bool in(int x) { return x >= 0 && x <= l; }
int main() {
  scanf("%d%d%d%d", &n, &l, &x, &y);
  for (int i = 1; i <= n; ++i) scanf("%d", ke + i), mat[ke[i]] = 1;
  for (int i = 1; i <= n; ++i) {
    if (!vx && mat.count(ke[i] + x)) {
      vx = 1;
    }
    if (!vy && mat.count(ke[i] + y)) {
      vy = 1;
    }
    if (vx && vy) {
      printf("0\n");
      return 0;
    }
  }
  if (vx || vy) {
    printf("1\n%d\n", vx ? y : x);
    return 0;
  }
  for (int i = 1; i <= n; ++i) {
    if (mat.count(ke[i] + x + y)) {
      printf("1\n%d\n", ke[i] + x);
      return 0;
    }
    if (mat.count(ke[i] + y - x) && in(ke[i] + y)) {
      printf("1\n%d\n", ke[i] + y);
      return 0;
    }
    if (mat.count(ke[i] - y + x) && in(ke[i] - y)) {
      printf("1\n%d\n", ke[i] - y);
      return 0;
    }
  }
  printf("2\n%d %d\n", x, y);
  return 0;
}
