#include <bits/stdc++.h>
using namespace std;
struct tree {
  int l, r, z, sum;
};
tree t[101010];
long long a[101010];
set<long long> s;
int main() {
  ios_base::sync_with_stdio(0);
  long long n, l, x, y;
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    s.insert(a[i]);
  }
  bool m = true, w = true;
  int pos = 0;
  for (int i = 0; i < n; ++i) {
    int t1 = s.count(a[i] - x);
    int t2 = s.count(a[i] + x);
    int r1 = s.count(a[i] + y);
    int r2 = s.count(a[i] - y);
    if (t1 || t2) w = false;
    if (r1 || r2) m = false;
  }
  if (!m && !w) {
    cout << 0;
    return 0;
  }
  if (!m || !w) {
    cout << 1 << endl;
    if (m)
      cout << y;
    else
      cout << x;
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    int t1 = 0, t2 = 0, r1 = 0, r2 = 0;
    t1 = s.count(a[i] + y - x);
    t2 = s.count(a[i] + y + x);
    r1 = s.count(a[i] - y - x);
    r2 = s.count(a[i] - y + x);
    if ((t1 || r1) && a[i] - x > 0) {
      cout << 1 << endl;
      cout << a[i] - x;
      return 0;
    }
    if ((t2 || r2) && a[i] + x < l) {
      cout << 1 << endl;
      cout << a[i] + x;
      return 0;
    }
  }
  cout << 2 << endl;
  cout << x << " " << y;
  return 0;
}
