#include <bits/stdc++.h>
using namespace std;
map<long long, bool> isMark;
int main() {
  long long n, x, y, l;
  cin >> n >> l >> x >> y;
  bool b = 0, g = 0, d = 0, bd = 0;
  long long diff = y - x, B = y + x;
  long long tmp;
  long long mark = -1, mark2 = -1;
  bool n1 = 1, n2 = 1;
  for (int i = 0; i < n; i++) {
    cin >> tmp;
    isMark[tmp] = 1;
    b |= isMark.count(tmp - x);
    g |= isMark.count(tmp - y);
    d |= isMark.count(tmp - diff);
    bd |= isMark.count(tmp - B);
    if (b && g) {
      cout << "0";
      return 0;
    }
    if (d && n1) {
      long long idx = tmp + x;
      if (idx > l) {
        idx = tmp - y;
        if (idx >= 0) {
          mark = idx;
        }
      } else {
        mark = idx;
      }
      if (mark == -1) {
        d = 0;
      } else {
        n1 = 0;
      }
    }
    if (bd && n2) {
      mark2 = tmp - y;
      n2 = 0;
    }
  }
  if (b & !g) {
    cout << "1\n" << y;
  } else if (g & !b) {
    cout << "1\n" << x;
  } else if (d) {
    cout << "1\n";
    cout << mark;
  } else if (bd) {
    cout << "1\n" << mark2 << "\n";
  } else {
    cout << "2\n";
    cout << x << " " << y;
  }
  return 0;
}
