#include <bits/stdc++.h>
using namespace std;
const int N = 1000000;
bool can[2];
int a[N];
int main() {
  ios::sync_with_stdio(false);
  int n, x, y, l;
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  set<int> q;
  for (int i = 0; i < n; i++) {
    q.insert(a[i]);
  }
  for (int i = 0; i < n; i++) {
    if (q.find(-x + a[i]) != q.end()) can[0] = 1;
    if (q.find(-y + a[i]) != q.end()) can[1] = 1;
  }
  if (!can[0] && !can[1]) {
    for (int i = 0; i < n; i++) {
      if (q.find(a[i] - x - y) != q.end()) {
        cout << "1\n" << a[i] - x << "\n";
        return 0;
      }
      if (q.find(a[i] + x - y) != q.end()) {
        if (0 <= a[i] + x && a[i] + x <= l)
          cout << "1\n" << a[i] + x << "\n";
        else if (0 <= a[i] - y && a[i] - y <= l)
          cout << "1\n" << a[i] - y << "\n";
        else
          continue;
        return 0;
      }
    }
  }
  vector<int> ans;
  if (!can[0]) ans.push_back(x);
  if (!can[1]) ans.push_back(y);
  cout << ans.size() << "\n";
  while (ans.size()) {
    cout << ans.back() << " ";
    ans.pop_back();
  }
  return 0;
}
