#include <bits/stdc++.h>
using namespace std;
int a[100005], *t, n, l, i;
int solve(int x) {
  int s;
  for (i = 0; i < n - 1; i++) {
    s = a[i] + x;
    t = lower_bound(a + i, a + n, s);
    if (*t == s) return 1;
  }
  return 0;
}
void work(int x, int y) {
  int s;
  for (i = 0; i < n - 1; i++) {
    s = a[i] + y - x;
    t = lower_bound(a + i, a + n, s);
    if (*t == s) {
      if (*t + x <= l) {
        printf("1\n%d\n", *t + x);
        break;
      } else if (*t - y >= 0) {
        printf("1\n%d\n", *t - y);
        break;
      }
    }
  }
  if (i == n - 1) printf("2\n%d %d\n", x, y);
}
int main() {
  int x, y;
  while (~scanf("%d%d%d%d", &n, &l, &x, &y)) {
    int flag = 0;
    for (i = 0; i < n; i++) scanf("%d", &a[i]);
    if (!solve(x)) flag++;
    if (!solve(y)) flag += 2;
    if (flag == 0)
      printf("0\n");
    else if (flag == 1)
      printf("1\n%d\n", x);
    else if (flag == 2)
      printf("1\n%d\n", y);
    else {
      if (solve(y + x))
        printf("1\n%d\n", *t - y);
      else
        work(x, y);
    }
  }
}
