#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, l, x, y;
  cin >> n >> l >> x >> y;
  set<int> d;
  for (int i = 0; i < n; ++i) {
    int t;
    cin >> t;
    d.insert(t);
  }
  bool issetX = false, issetY = false;
  for (set<int>::iterator i = d.begin(); i != d.end(); ++i) {
    if (d.find(*i + x) != d.end()) {
      issetX = true;
    }
    if (d.find(*i + y) != d.end()) {
      issetY = true;
    }
  }
  if (issetX && issetY) {
    cout << 0;
    return 0;
  } else if (issetX) {
    cout << "1 " << endl << y;
  } else if (issetY) {
    cout << "1 " << endl << x;
  } else {
    int point = -1;
    for (set<int>::iterator i = d.begin(); i != d.end(); ++i) {
      if (d.find(*i + (y - x)) != d.end()) {
        if (*i - x >= 0) {
          point = *i - x;
          break;
        } else if (*i + (y - x) + x <= l) {
          point = *i + (y - x) + x;
          break;
        }
      }
      if (d.find(*i + (y + x)) != d.end()) {
        point = *i + x;
        break;
      }
    }
    if (point < 0) {
      cout << "2 " << endl << x << " " << y;
    } else {
      cout << "1 " << endl << point;
    }
  }
  return 0;
}
