#include <bits/stdc++.h>
using namespace std;
int n, l, x, y, a[100005];
set<int> s;
int main() {
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    s.insert(a[i]);
  }
  int count = 0;
  int ans = -1;
  for (int i = 0; i < n - 1; i++) {
    if (s.find(a[i] + x) != s.end()) {
      count = 0;
      break;
    }
    count = 1;
  }
  if (count) ans = x;
  int c_temp = count;
  for (int i = 0; i < n - 1; i++) {
    if (s.find(a[i] + y) != s.end()) {
      count = c_temp;
      break;
    }
    count = ((c_temp == 1) ? 2 : 1);
  }
  if (c_temp == 0) ans = y;
  if (count == 2) {
    for (int i = 0; i < n; i++) {
      if (a[i] + x <= l && (s.find(a[i] + x + y) != s.end() ||
                            s.find(a[i] + x - y) != s.end())) {
        count = 1;
        ans = a[i] + x;
        break;
      }
      if (a[i] + y <= l && (s.find(a[i] + y + x) != s.end() ||
                            s.find(a[i] + y - x) != s.end())) {
        count = 1;
        ans = a[i] + y;
        break;
      }
      if (a[i] - x >= 0 && (s.find(a[i] - x - y) != s.end() ||
                            s.find(a[i] - x + y) != s.end())) {
        count = 1;
        ans = a[i] - x;
        break;
      }
      if (a[i] - y >= 0 && (s.find(a[i] - y - x) != s.end() ||
                            s.find(a[i] - y + x) != s.end())) {
        count = 1;
        ans = a[i] - y;
        break;
      }
    }
  }
  if (count == 1)
    cout << count << endl << ans << endl;
  else if (count == 2)
    cout << count << endl << x << " " << y << endl;
  else
    cout << count << endl;
  return 0;
}
