#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
const int inf = 1e9 + 7;
const long long ll_inf = 1e18 + 420;
const double eps = 1e-4;
const int N = 1e6 + 7;
const int MAX = 2e5 + 9;
const int mod = 1e9 + 7;
const long double pi = 3.14159265359;
bool t[2];
int n, l, x, y;
int main() {
  cin >> n >> l >> x >> y;
  set<int> s;
  int a[n + 100];
  for (int i = 0; i < n; ++i) {
    scanf("%d", &a[i]);
    s.insert(a[i]);
  }
  for (auto i : s) {
    auto it = s.find(i + x);
    if (it != s.end()) t[0] = 1;
    it = s.find(i + y);
    if (it != s.end()) t[1] = 1;
  }
  if (t[0] && t[1]) {
    printf("0\n");
    return 0;
  }
  if (t[0]) {
    printf("1\n");
    printf("%d\n", y);
    return 0;
  }
  if (t[1]) {
    printf("1\n");
    printf("%d\n", x);
    return 0;
  }
  for (auto i : s) {
    auto it = s.find(i + x + y);
    if (it != s.end()) {
      printf("1\n");
      printf("%d\n", i + x);
      return 0;
    }
    it = s.find(i + y - x);
    if (it != s.end()) {
      if (i - x >= 0) {
        printf("1\n");
        printf("%d\n", i - x);
        return 0;
      } else if (i + y <= l) {
        printf("1\n");
        printf("%d\n", i + y);
        return 0;
      }
    }
  }
  printf("2\n");
  printf("%d %d\n", x, y);
}
