#include <bits/stdc++.h>
using namespace std;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long t = 1;
  while (t--) {
    long long n, l, x, y, i;
    cin >> n >> l >> x >> y;
    long long f1 = 0, f2 = 0;
    map<long long, long long> mp;
    vector<long long> v;
    for (i = 0; i < n; i++) {
      long long temp;
      cin >> temp;
      if (mp.find(temp - x) != mp.end()) f1 = 1;
      if (mp.find(temp - y) != mp.end()) f2 = 1;
      mp[temp] = 1;
      v.push_back(temp);
    }
    if (f1 == 1 and f2 == 1)
      cout << 0;
    else if (f1 == 1 and f2 == 0) {
      cout << 1 << '\n';
      cout << y;
    } else if (f1 == 0 and f2 == 1) {
      cout << 1 << '\n';
      cout << x;
    } else {
      for (i = 0; i < n; i++) {
        long long p = v[i] + max(x, y);
        if (mp.find(p - min(x, y)) != mp.end() and p <= l) {
          cout << 1 << '\n' << p;
          return 0;
        }
        if (mp.find(p + min(x, y)) != mp.end() and p <= l) {
          cout << 1 << '\n' << p;
          return 0;
        }
      }
      for (i = n - 1; i >= 0; i--) {
        long long p = v[i] - max(x, y);
        if (mp.find(p + min(x, y)) != mp.end() and p >= 0) {
          cout << 1 << '\n' << p;
          return 0;
        }
        if (mp.find(p - min(x, y)) != mp.end() and p >= 0) {
          cout << 1 << '\n' << p;
          return 0;
        }
      }
      cout << 2 << '\n' << x << " " << y;
    }
  }
  return 0;
}
