#include <bits/stdc++.h>
using namespace std;
const int MAX = 200005;
int a[MAX], X[MAX], Y[MAX], idxX, idxY;
int main() {
  int n, l, x, y;
  scanf("%d %d %d %d", &n, &l, &x, &y);
  for (int i = 0; i < n; ++i) {
    scanf("%d", a + i);
  }
  bool checkX = 0, checkY = 0;
  for (int i = 0; i < n; ++i) {
    if (binary_search(a, a + n, a[i] + x) ||
        binary_search(a, a + n, a[i] - x)) {
      checkX = 1;
    } else if (!checkX) {
      if (a[i] + x < l) X[idxX++] = a[i] + x;
      if (a[i] - x >= 0) X[idxX++] = a[i] - x;
    }
    if (binary_search(a, a + n, a[i] + y) ||
        binary_search(a, a + n, a[i] - y)) {
      checkY = 1;
    } else if (!checkY) {
      if (a[i] + y < l) Y[idxY++] = a[i] + y;
      if (a[i] - y >= 0) Y[idxY++] = a[i] - y;
    }
  }
  if (checkX && checkY) {
    printf("0");
  } else if (checkX) {
    printf("1\n%d", Y[0]);
  } else if (checkY) {
    printf("1\n%d", X[0]);
  } else {
    sort(X, X + idxX);
    sort(Y, Y + idxY);
    for (int i = 0; i < idxX; ++i) {
      if (binary_search(Y, Y + idxY, X[i])) {
        printf("1\n%d", X[i]);
        return 0;
      }
    }
    printf("2\n%d %d", X[0], Y[0]);
  }
  return 0;
}
