#include <bits/stdc++.h>
using namespace std;
int n;
long long a[100123], l, x, y;
vector<pair<int, int> > all;
pair<int, int> f(long long v) {
  long long sum = 0;
  int r = 1;
  pair<int, int> ret;
  all.clear();
  for (int l = 1; l <= n; ++l) {
    while (a[r] - a[l] < v) r++;
    if (a[r] - a[l] == v) {
      all.push_back(pair<int, int>(l, r));
      ret = pair<int, int>(l, r);
    }
  }
  if (((int)((all).size()))) return ret;
  return pair<int, int>(0, 0);
}
int main() {
  ios_base::sync_with_stdio(0);
  scanf(" %d %lld %lld %lld", &n, &l, &x, &y);
  long long val;
  for (int i = 1; i <= n; ++i) {
    scanf(" %lld", &a[i]);
  }
  a[n + 1] = (1LL << 62);
  pair<int, int> temx = f(x);
  pair<int, int> temy = f(y);
  if (!temx.first && !temy.first) {
    pair<int, int> temxy = f(x + y);
    if (temxy.first) {
      printf("1\n%lld\n", a[temxy.first] + x);
    } else {
      temxy = f(y - x);
      if (temxy.first) {
        for (int i = 0; i < ((int)((all).size())); ++i) {
          temxy = all[i];
          if (a[temxy.second] + x < l) {
            printf("1\n%lld\n", a[temxy.second] + x);
            return 0;
          } else if (a[temxy.first] - x > 0) {
            printf("1\n%lld\n", a[temxy.first] - x);
            return 0;
          }
        }
        printf("2\n%lld %lld\n", x, y);
      } else {
        printf("2\n%lld %lld\n", x, y);
      }
    }
  } else if (!temx.first && temy.first) {
    printf("1\n%lld\n", x);
  } else if (temx.first && !temy.first) {
    printf("1\n%lld\n", y);
  } else {
    printf("0\n");
  }
  return 0;
}
