#include <bits/stdc++.h>
using namespace std;
map<int, int> P;
int a[100010];
int n, l, x, y, tp, maxm;
int g[2];
bool o[2];
int main() {
  scanf("%d%d%d%d", &n, &l, &x, &y);
  g[0] = min(x, y);
  g[1] = max(x, y);
  o[0] = o[1] = true;
  for (int i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    P[a[i]] = 1;
  }
  sort(a + 1, a + n + 1);
  bool boy = false, girl = false;
  for (int i = 1; i <= n; i++) {
    if (a[i] - x >= 0 && P[a[i] - x]) girl = true;
    if (a[i] - y >= 0 && P[a[i] - y]) boy = true;
  }
  if (boy && girl) {
    printf("0\n");
    return 0;
  }
  if (boy) {
    printf("1\n%d\n", x);
    return 0;
  }
  if (girl) {
    printf("1\n%d\n", y);
    return 0;
  }
  bool flag1 = false;
  bool flag2 = false;
  bool flag3 = false;
  int where = 0;
  for (int i = 1; i <= n; i++) {
    if (a[i] >= x && P[a[i] + y - x]) {
      flag1 = true;
      where = a[i];
      break;
    }
    if (a[i] + y <= l && P[a[i] + y - x]) {
      flag2 = true;
      where = a[i];
      break;
    }
    if (a[i] + x + y <= l && P[a[i] + x + y]) {
      flag3 = true;
      where = a[i];
      break;
    }
  }
  if (flag1)
    printf("1\n%d\n", where - x);
  else if (flag2)
    printf("1\n%d\n", where + y);
  else if (flag3)
    printf("1\n%d\n", where + x);
  else
    printf("2\n%d %d\n", x, y);
  return 0;
}
