#include <bits/stdc++.h>
using namespace std;
double PI = 3.141592653589793;
const double EPS = 1e-9;
const int N = 1e6 + 5;
const long long mod = 1e9 + 7;
const int oo = 1e9;
int dx[] = {0, 0, 1, -1, 1, -1, 1, -1};
int dy[] = {1, -1, 0, 0, -1, 1, 1, -1};
vector<long long> v;
int n;
long long l, x, y;
map<long long, bool> mp_boy, mp_girl;
int main() {
  scanf("%d%lld%lld%lld", &n, &l, &x, &y);
  for (int i = 0; i <= n - 1; i++) {
    long long a;
    scanf("%lld", &a);
    v.push_back(a);
  }
  bool girl = 0, boy = 0, same = 0;
  long long ans;
  for (int i = 0; i <= n - 1; i++) {
    if (x + v[i] <= l) {
      if (mp_boy[x + v[i]]) same = 1, ans = x + v[i];
      mp_girl[x + v[i]] = 1;
      if (binary_search(v.begin(), v.end(), x + v[i])) girl = 1;
    }
    if (y + v[i] <= l) {
      if (mp_girl[y + v[i]]) same = 1, ans = y + v[i];
      mp_boy[y + v[i]] = 1;
      if (binary_search(v.begin(), v.end(), y + v[i])) boy = 1;
    }
    if (v[i] - x >= 0) {
      if (mp_boy[v[i] - x]) same = 1, ans = v[i] - x;
      mp_girl[v[i] - x] = 1;
    }
    if (v[i] - y >= 0) {
      if (mp_girl[v[i] - y]) same = 1, ans = v[i] - y;
      mp_boy[v[i] - y] = 1;
    }
  }
  vector<long long> t;
  if (!girl) t.push_back(x);
  if (!boy) t.push_back(y);
  if (boy && girl) {
    printf("0");
    return 0;
  }
  if (same)
    printf("1\n%lld", ans);
  else {
    printf("%d\n", t.size());
    for (int i = 0; i < t.size(); i++) printf("%lld ", t[i]);
  }
}
