#include <bits/stdc++.h>
using namespace std;
int a[100010];
bool f(int *p, int n, int des, int &i) {
  for (i = 0; i + 1 < n; i++) {
    int left = i + 1;
    int right = n - 1;
    while (left < right) {
      int mid = (left + right) / 2;
      if (p[mid] >= des + p[i])
        right = mid;
      else
        left = mid + 1;
    }
    if (p[left] == des + p[i]) return true;
  }
  return false;
}
bool g(int *p, int n, int des, int &i) {
  for (i = n - 2; i >= 0; i--) {
    int left = i + 1;
    int right = n - 1;
    while (left < right) {
      int mid = (left + right) / 2;
      if (p[mid] >= des + p[i])
        right = mid;
      else
        left = mid + 1;
    }
    if (left == right && p[left] == des + p[i]) return true;
  }
  return false;
}
int main() {
  int n, l, x, y;
  while (cin >> n >> l >> x >> y) {
    for (int i = 0; i < n; i++) {
      cin >> a[i];
    }
    int i;
    bool xx = f(a, n, x, i);
    bool yy = f(a, n, y, i);
    if (xx && yy)
      cout << 0 << endl;
    else if (xx || yy) {
      cout << 1 << endl;
      cout << (xx ? y : x) << endl;
    } else {
      bool xy = f(a, n, x + y, i);
      if (xy) {
        cout << 1 << endl;
        cout << a[i] + x << endl;
      } else {
        xy = f(a, n, y - x, i);
        if (xy && a[i] + y < l) {
          cout << 1 << endl;
          cout << a[i] + y << endl;
        } else {
          xy = g(a, n, y - x, i);
          if (xy && a[i] > x) {
            cout << 1 << endl;
            cout << a[i] - x << endl;
          } else {
            cout << 2 << endl;
            cout << x << " " << y << endl;
          }
        }
      }
    }
  }
  return 0;
}
