#include <bits/stdc++.h>
using namespace std;
int n, L, fx, fy, ans;
int a[100010];
set<int> aa, x;
int main() {
  int i, canx = 0, cany = 0, tmp;
  scanf("%d%d%d%d", &n, &L, &fx, &fy);
  for (i = 1; i <= n; i++) {
    scanf("%d", &a[i]);
    aa.insert(a[i]);
  }
  for (i = 1; i <= n; i++) {
    if (!canx) {
      tmp = a[i] + fx;
      if (aa.find(tmp) != aa.end()) canx = 1;
    }
    if (!cany) {
      tmp = a[i] + fy;
      if (aa.find(tmp) != aa.end()) cany = 1;
    }
  }
  if (canx && cany) {
    printf("0\n");
    return 0;
  }
  if (canx + cany == 1) {
    printf("1\n");
    if (!canx)
      printf("%d\n", fx);
    else
      printf("%d\n", fy);
    return 0;
  }
  ans = -1;
  for (i = 1; i <= n; i++) {
    tmp = a[i] + fx;
    if (tmp >= 0 && tmp <= L) x.insert(tmp);
    tmp = a[i] - fx;
    if (tmp >= 0 && tmp <= L) x.insert(tmp);
  }
  for (i = 1; i <= n; i++) {
    tmp = a[i] + fy;
    if (tmp >= 0 && tmp <= L && x.find(tmp) != x.end()) {
      ans = tmp;
      break;
    }
    tmp = a[i] - fy;
    if (tmp >= 0 && tmp <= L && x.find(tmp) != x.end()) {
      ans = tmp;
      break;
    }
  }
  if (ans != -1) {
    printf("1\n");
    printf("%d\n", ans);
  } else {
    printf("2\n");
    printf("%d %d\n", fx, fy);
  }
  return 0;
}
