#include <bits/stdc++.h>
using namespace std;
const int N = 100005;
int n, L, x, y, a[N];
inline void read(int &x) {
  char ch;
  x = 0;
  for (ch = getchar(); ch < '0' || ch > '9'; ch = getchar())
    ;
  for (; ch >= '0' && ch <= '9'; x = x * 10 + ch - 48, ch = getchar())
    ;
}
int query(int key) {
  int l = 0, r = 1;
  while (l <= r && r < n) {
    if (a[r] - a[l] == key)
      return 1;
    else if (a[r] - a[l] > key)
      l++;
    else
      r++;
  }
  return 0;
}
void solve() {
  int isX = query(x), isY = query(y);
  if (isX && isY) {
    printf("0\n");
    return;
  }
  if (isX && !isY) {
    printf("1\n%d\n", y);
    return;
  }
  if (!isX && isY) {
    printf("1\n%d\n", x);
    return;
  }
  int l = 0, r = 1, key = y + x;
  while (l <= r && r < n) {
    if (a[r] - a[l] == key) {
      printf("1\n%d\n", a[l] + x);
      return;
    } else if (a[r] - a[l] > key)
      l++;
    else
      r++;
  }
  l = 0, r = 1, key = y - x;
  while (l <= r && r < n) {
    if (a[r] - a[l] == key) {
      if (a[l] - x > 0) {
        printf("1\n%d\n", a[l] - x);
        return;
      }
      if (a[r] + x < L) {
        printf("1\n%d\n", a[r] + x);
        return;
      }
      l++;
    } else if (a[r] - a[l] > y - x)
      l++;
    else
      r++;
  }
  printf("2\n%d %d\n", x, y);
}
int main() {
  read(n);
  read(L);
  read(x);
  read(y);
  for (int i = 0; i < n; i++) read(a[i]);
  solve();
  return 0;
}
