#include <bits/stdc++.h>
using namespace std;
long long int gcd(long long int m, long long int n) {
  if (n == 0) return m;
  return gcd(n, m % n);
}
vector<int> v;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  int n, l, x, y;
  cin >> n >> l >> x >> y;
  set<int> s;
  for (int i = 0; i < n; i++) {
    int temp;
    cin >> temp;
    s.insert(temp);
  }
  int a, b;
  a = 0;
  b = 0;
  for (set<int>::iterator it = s.begin(); it != s.end(); it++) {
    if (s.find((*it) + x) != s.end()) {
      a = 1;
    }
    if (s.find((*it) + y) != s.end()) {
      b = 1;
    }
  }
  if (a && b)
    cout << "0\n";
  else if (a) {
    cout << "1\n";
    cout << y << endl;
  } else if (b) {
    cout << "1\n";
    cout << x << endl;
  } else {
    for (set<int>::iterator it = s.begin(); it != s.end(); it++) {
      if (*it + x <= l && (*it + x >= 0)) {
        s.insert((*it) + x);
        if (s.find((*it) + x + y) != s.end() && ((*it) + x + y) <= l) {
          cout << "1\n";
          cout << (*it) + x << endl;
          return 0;
        }
        if (s.find((*it) + x - y) != s.end() && ((*it) + x - y) <= l &&
            (*it + x - y) >= 0) {
          cout << "1\n";
          cout << (*it) + x << endl;
          return 0;
        }
        s.erase((*it) + x);
      }
      if (*it - x <= l && (*it - x >= 0)) {
        s.insert((*it) - x);
        if (s.find((*it) - x + y) != s.end() && ((*it) - x + y) <= l) {
          cout << "1\n";
          cout << (*it) - x << endl;
          return 0;
        }
        if (s.find((*it) - x - y) != s.end() && ((*it) - x - y) <= l &&
            (*it - x - y >= 0)) {
          cout << "1\n";
          cout << (*it) - x << endl;
          return 0;
        }
        s.erase((*it) - x);
      }
      if (*it + y <= l && (*it + y >= 0)) {
        s.insert((*it) + y);
        if (s.find((*it) + y + x) != s.end() && ((*it) + y + x) <= l) {
          cout << "1\n";
          cout << (*it) + y << endl;
          return 0;
        }
        if (s.find((*it) + y - x) != s.end() && ((*it) + y - x) <= l &&
            (*it + y - x) >= 0) {
          cout << "1\n";
          cout << (*it) + y << endl;
          return 0;
        }
        s.erase((*it) + y);
      }
      if (*it - y <= l && (*it - y >= 0)) {
        s.insert((*it) - y);
        if (s.find((*it) - y + x) != s.end() && ((*it) - y + x) <= l) {
          cout << "1\n";
          cout << (*it) - y << endl;
          return 0;
        }
        if (s.find((*it) - y - x) != s.end() && ((*it) - y - x) <= l &&
            (*it - y - x >= 0)) {
          cout << "1\n";
          cout << (*it) - y << endl;
          return 0;
        }
        s.erase((*it) - y);
      }
    }
    cout << "2\n";
    cout << x << " " << y << endl;
  }
  return 0;
}
