#include <bits/stdc++.h>
using namespace std;
set<int> marks;
int l;
int x, y;
int a[200200];
int n;
int main() {
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
    marks.insert(a[i]);
  }
  bool xx = false;
  bool yy = false;
  for (int i = 0; i < n; ++i) {
    int start = a[i];
    int end = a[i] + x;
    if (marks.find(end) != marks.end()) {
      xx = true;
      break;
    }
  }
  for (int i = 0; i < n; ++i) {
    int start = a[i];
    int end = a[i] + y;
    if (marks.find(end) != marks.end()) {
      yy = true;
      break;
    }
  }
  if (xx && yy) {
    cout << 0 << endl;
    return 0;
  }
  if (xx) {
    cout << 1 << endl << y << endl;
    return 0;
  }
  if (yy) {
    cout << 1 << endl << x << endl;
    return 0;
  }
  for (int i = 0; i < n; ++i) {
    int start = a[i];
    int end1 = a[i] + y - x;
    int end2 = a[i] + x + y;
    if (marks.find(end2) != marks.end()) {
      cout << 1 << endl << start + x << endl;
      return 0;
    }
    if (marks.find(end1) != marks.end()) {
      if (start - x >= 0) {
        cout << 1 << endl << start - x << endl;
        return 0;
      }
      if (end1 + x <= l) {
        cout << 1 << endl << end1 + x << endl;
        return 0;
      }
    }
  }
  cout << 2 << endl << x << ' ' << y << endl;
  return 0;
}
