#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const ll MOD = 1e9 + 7, N = 1e5 + 10;
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  ll n, l, x, y;
  cin >> n >> l >> x >> y;
  vector<ll> A(n);
  for (auto &e : A) cin >> e;
  ll is_x = 0, is_y = 0;
  for (ll i = 0; i < n; i++) {
    is_x |= binary_search(A.begin(), A.end(), A[i] + x);
    is_y |= binary_search(A.begin(), A.end(), A[i] + y);
  }
  if (is_x & is_y) {
    return cout << 0, 0;
  }
  if (is_x) {
    cout << "1\n" << y << '\n';
    return 0;
  }
  if (is_y) {
    cout << "1\n" << x << '\n';
    return 0;
  }
  for (ll i = 0; i < n; i++) {
    if (A[i] + x <= l and (binary_search(A.begin(), A.end(), A[i] + x + y) or
                           binary_search(A.begin(), A.end(), A[i] + x - y))) {
      return cout << "1\n" << A[i] + x, 0;
      21;
    }
    if (A[i] - x >= 0 and (binary_search(A.begin(), A.end(), A[i] - x + y) or
                           binary_search(A.begin(), A.end(), A[i] - x - y))) {
      return cout << "1\n" << A[i] - x, 0;
      21;
    }
    swap(x, y);
    if (A[i] + x <= l and (binary_search(A.begin(), A.end(), A[i] + x + y) or
                           binary_search(A.begin(), A.end(), A[i] + x - y))) {
      return cout << "1\n" << A[i] + x, 0;
      21;
    }
    if (A[i] - x >= 0 and (binary_search(A.begin(), A.end(), A[i] - x + y) or
                           binary_search(A.begin(), A.end(), A[i] - x - y))) {
      return cout << "1\n" << A[i] - x, 0;
      21;
    }
    swap(x, y);
  }
  cout << "2\n" << x << ' ' << y << '\n';
  return 0;
}
