#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5 + 1e5;
int marks[MAXN];
int main() {
  int n, l, x, y;
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; i++) {
    cin >> marks[i];
  }
  bool fg = false;
  bool fb = false;
  for (int i = 0; i < n; i++) {
    int upg = marks[i] + x;
    int upb = marks[i] + y;
    if (upg <= l && binary_search(marks, marks + n, upg)) fg = true;
    if (upb <= l && binary_search(marks, marks + n, upb)) fb = true;
  }
  int v = 0;
  if (!fg && !fb) {
    for (int i = 0; i < n; i++) {
      int tu = marks[i] + x + y;
      if (tu <= l && binary_search(marks, marks + n, tu)) {
        cout << 1 << endl << marks[i] + x << endl;
        return 0;
      }
      tu = marks[i] + y - x;
      if (tu <= l && binary_search(marks, marks + n, tu) &&
          (marks[i] + y <= l || marks[i] - x >= 0)) {
        cout << 1 << endl;
        if (marks[i] + y <= l) {
          cout << marks[i] + y << endl;
          return 0;
        }
        if (marks[i] - x >= 0) {
          cout << marks[i] - x << endl;
          return 0;
        }
      }
    }
  }
  if (!fb) v++;
  if (!fg) v++;
  cout << v << endl;
  if (!fg) cout << x << " ";
  if (!fb) cout << y;
  cout << endl;
}
