#include <bits/stdc++.h>
using namespace std;
int a[110000];
int f(int x, int len) {
  int l = 0, r = len - 1, mid;
  while (l <= r) {
    mid = (l + r) >> 1;
    if (a[mid] == x) return mid;
    if (a[mid] < x)
      l = mid + 1;
    else
      r = mid - 1;
  }
  return 0;
}
int main() {
  int n, l, x, y;
  int fx = 0, fy = 0;
  scanf("%d%d%d%d", &n, &l, &x, &y);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < n; i++)
    if (f(a[i] + x, n)) {
      fx = 1;
      break;
    }
  for (int i = 0; i < n; i++)
    if (f(a[i] + y, n)) {
      fy = 1;
      break;
    }
  if (!fx && !fy) {
    int p = 0, q = 0;
    for (int i = 0; i < n; i++)
      if (a[i] + y <= l || a[i] - x >= 0) {
        p = f(a[i] + y - x, n);
        if (p) {
          q = i;
          break;
        }
      }
    if (p) {
      printf("1\n%d\n", a[p] - y > 0 ? a[p] - y : a[p] + x);
      return 0;
    }
    for (int i = 0; i < n; i++)
      if (a[i] + x <= l) {
        p = f(a[i] + x + y, n);
        if (p) {
          q = i;
          break;
        }
      }
    if (p) {
      printf("1\n%d\n", a[p] - y);
      return 0;
    }
    printf("2\n%d %d\n", x, y);
    return 0;
  }
  if (fx && fy)
    printf("0\n");
  else
    printf("1\n%d\n", fx ? y : x);
  return 0;
}
