#include <bits/stdc++.h>
using namespace std;
int n, l, x, y, a[100002], u, v, r = 2;
set<int> A;
bool X, Y;
int main() {
  scanf("%d%d%d%d", &n, &l, &x, &y);
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
    A.insert(a[i]);
  }
  for (int i = 0; i < n; i++) {
    if (A.find(a[i] + x) != A.end()) X = true;
    if (A.find(a[i] + y) != A.end()) Y = true;
  }
  if (X && Y) {
    printf("0\n");
    return 0;
  }
  if (X) {
    printf("%d\n%d\n", 1, y);
    return 0;
  }
  if (Y) {
    printf("%d\n%d\n", 1, x);
    return 0;
  }
  u = x;
  v = y;
  for (int i = 0; i < n; i++) {
    if (a[i] + x < l &&
        (A.find(a[i] + x - y) != A.end() || A.find(a[i] + x + y) != A.end())) {
      r = 1;
      u = a[i] + x;
      break;
    }
    if (a[i] - x > 0 &&
        (A.find(a[i] - x + y) != A.end() || A.find(a[i] - x - y) != A.end())) {
      r = 1;
      u = a[i] - x;
      break;
    }
  }
  printf("%d\n", r);
  (r == 2) ? printf("%d %d\n", u, v) : printf("%d\n", u);
  return 0;
}
