#include <bits/stdc++.h>
using namespace std;
const long long MAX = 1e6 + 8;
const long long sz = 1e5 + 5;
void f_io() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
}
int32_t main() {
  f_io();
  long long t = 1;
  while (t--) {
    long long n, l, x, y;
    cin >> n >> l >> x >> y;
    unordered_map<long long, long long> vis;
    vector<long long> v;
    for (long long i = 0; i < n; i++) {
      long long mark;
      cin >> mark;
      vis[mark] = 1;
      v.push_back(mark);
    }
    long long fans = 0, flag1 = 0, flag2 = 0;
    for (long long i = 0; i < n; i++) {
      if (vis[x + v[i]]) {
        flag1 = 1;
        break;
      }
    }
    for (long long i = 0; i < n; i++) {
      if (vis[y + v[i]]) {
        flag2 = 1;
        break;
      }
    }
    vector<long long> ans;
    if (!flag1) {
      fans++;
      ans.push_back(x);
    }
    if (!flag2) {
      fans++;
      ans.push_back(y);
    }
    if (fans == 2) {
      unordered_map<long long, long long> temp;
      long long fflag = 0, _ans;
      for (long long i = 0; i < n; i++) {
        long long k1 = v[i] - x, k2 = v[i] + x;
        if (k1 >= 0) temp[k1] = 1;
        if (k2 <= l) temp[k2] = 1;
      }
      for (long long i = 0; i < n; i++) {
        long long k1 = v[i] - y, k2 = v[i] + y;
        if (k1 >= 0) {
          if (temp[k1]) {
            fflag = 1;
            _ans = k1;
            break;
          }
        }
        if (k2 >= 0) {
          if (temp[k2]) {
            fflag = 1;
            _ans = k2;
            break;
          }
        }
      }
      if (fflag) {
        cout << "1"
             << "\n"
             << _ans << "\n";
        continue;
      }
    }
    cout << fans << "\n";
    for (auto k : ans) cout << k << " ";
  }
}
