#include <bits/stdc++.h>
using namespace std;
int A[(1 << 17)];
int n, l, x, y;
bool Xo, Yo;
map<int, bool> M;
int chk(int O, int dist) {
  if (O < 0 || O > l) {
    return -1;
  }
  if (M[O + dist] || M[O - dist]) {
    return O;
  }
  return -1;
}
int main() {
  scanf("%d%d%d%d", &n, &l, &x, &y);
  for (int i = 0; i < n; i++) {
    scanf("%d", &A[i]);
    M[A[i]] = true;
  }
  for (int i = 0; i < n; i++) {
    Xo |= M[A[i] - x];
    Xo |= M[A[i] + x];
    Yo |= M[A[i] - y];
    Yo |= M[A[i] + y];
  }
  if (Xo && Yo) {
    printf("0\n");
    return 0;
  }
  if (Xo) {
    printf("1\n%d\n", y);
    return 0;
  }
  if (Yo) {
    printf("1\n%d\n", x);
    return 0;
  }
  for (int i = 0; i < n; i++) {
    int a[4];
    a[0] = chk(A[i] - x, y);
    a[1] = chk(A[i] + x, y);
    a[2] = chk(A[i] - y, x);
    a[3] = chk(A[i] + y, x);
    for (int j = 0; j < 4; j++) {
      if (a[j] != -1) {
        printf("1\n%d\n", a[j]);
        return 0;
      }
    }
  }
  printf("2\n%d %d\n", x, y);
  return 0;
}
