#include <bits/stdc++.h>
using namespace std;
int n;
long long l, x, y;
vector<long long> a;
map<long long, long long> m;
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> l >> x >> y;
  long long s = 0;
  bool ok1, ok2;
  ok1 = ok2 = false;
  a = vector<long long>(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    if (m.count(a[i] - x)) {
      ok1 = true;
    }
    if (m.count(a[i] - y)) {
      ok2 = true;
    }
    m[a[i]] = 1;
  }
  if (x + y == 0) {
    cout << "0\n";
    return 0;
  }
  if (ok1 & ok2) {
    cout << "0\n";
    return 0;
  }
  if (ok1) {
    cout << "1\n";
    cout << y << "\n";
    return 0;
  }
  if (ok2) {
    cout << "1\n";
    cout << x << "\n";
    return 0;
  }
  for (int i = 0; i < n; i++) {
    int l1 = upper_bound(a.begin(), a.end(), a[i] + x - y) - a.begin();
    if (l1 && a[l1 - 1] == a[i] + x - y && a[i] + x <= a[n - 1]) {
      cout << "1\n" << a[i] + x << '\n';
      return 0;
    }
    l1 = upper_bound(a.begin(), a.end(), a[i] + x + y) - a.begin();
    if (l1 && a[l1 - 1] == a[i] + x + y && a[i] + x <= a[n - 1]) {
      cout << "1\n" << a[i] + x << '\n';
      return 0;
    }
    l1 = upper_bound(a.begin(), a.end(), a[i] - x + y) - a.begin();
    if (l1 && a[l1 - 1] == a[i] - x + y && a[i] - x >= 0) {
      cout << "1\n" << a[i] - x << '\n';
      return 0;
    }
    l1 = upper_bound(a.begin(), a.end(), a[i] - x - y) - a.begin();
    if (l1 && a[l1 - 1] == a[i] - x - y && a[i] - x >= 0) {
      cout << "1\n" << a[i] - x << '\n';
      return 0;
    }
  }
  cout << "2\n";
  cout << x << " " << y << "\n";
  return 0;
}
