#include <bits/stdc++.h>
using namespace std;
int a[100005], n, l, x, y, p, q;
int bse(int a[], int l, int r, int k) {
  if (l == r && a[l] != k) return 0;
  int t = a[(l + r) / 2];
  if (t == k)
    return (l + r) / 2;
  else if (t < k)
    return bse(a, (l + r) / 2 + 1, r, k);
  else
    return bse(a, l, (l + r) / 2, k);
}
int main() {
  scanf("%d%d%d%d", &n, &l, &x, &y);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  p = 0;
  q = 0;
  for (int i = 1; i <= n; i++)
    if (bse(a, 1, n, x + a[i])) {
      p++;
      break;
    }
  for (int i = 1; i <= n; i++)
    if (bse(a, 1, n, y + a[i])) {
      q++;
      break;
    }
  if (p && q) {
    printf("0\n");
    return 0;
  }
  for (int i = 1; i <= n; i++)
    if (bse(a, 1, n, x - y + a[i]) && x + a[i] <= l) {
      printf("1\n%d\n", x + a[i]);
      return 0;
    }
  for (int i = 1; i <= n; i++)
    if (bse(a, 1, n, a[i] + x + y) && a[i] + x <= l) {
      printf("1\n%d\n", x + a[i]);
      return 0;
    }
  for (int i = 1; i <= n; i++)
    if (bse(a, 1, n, a[i] - x - y) && a[i] - x >= 0) {
      printf("1\n%d\n", a[i] - x);
      return 0;
    }
  for (int i = 1; i <= n; i++)
    if (bse(a, 1, n, a[i] - x + y) && a[i] - x >= 0) {
      printf("1\n%d\n", a[i] - x);
      return 0;
    }
  if (p)
    printf("1\n%d\n", y);
  else if (q)
    printf("1\n%d\n", x);
  else {
    for (int i = 1; i <= n; i++)
      if (a[i] == x + y) {
        p = 1;
        break;
      }
    if (p)
      printf("1\n%d\n", x);
    else
      printf("2\n%d %d\n", x, y);
  }
  return 0;
}
