#include <bits/stdc++.h>
using namespace std;
map<int, int> mp;
pair<int, int> ans;
int a[100001];
bool fx = false, fy = false;
int main() {
  int n, l, x, y;
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
    mp[a[i]] = 1;
  }
  for (int i = 0; i < n; ++i) {
    if (mp.find(a[i] - x) != mp.end() || mp.find(a[i] + x) != mp.end())
      fx = true;
    if (mp.find(a[i] - y) != mp.end() || mp.find(a[i] + y) != mp.end())
      fy = true;
    if (fx && fy) {
      cout << "0" << endl;
      return 0;
    }
  }
  if (fx && !fy) {
    cout << "1" << endl << y << endl;
    return 0;
  }
  if (!fx && fy) {
    cout << "1" << endl << x << endl;
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    if (a[i] + x <= l && mp.find(a[i] + x + y) != mp.end()) {
      cout << "1" << endl << a[i] + x << endl;
      return 0;
    }
    if (a[i] - x >= 0 && mp.find(a[i] - x + y) != mp.end()) {
      cout << "1" << endl << a[i] - x << endl;
      return 0;
    }
    if (a[i] + x <= l && mp.find(a[i] + x - y) != mp.end()) {
      cout << "1" << endl << a[i] + x << endl;
      return 0;
    }
  }
  printf("2\n%d %d\n", x, y);
  return 0;
}
