#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int n, l, x, y;
bool f(int x) {
  for (int i = 0; i < n - 1; i++) {
    if (binary_search(v.begin(), v.end(), v[i] + x)) {
      return true;
    }
  }
  return false;
}
int main() {
  cin >> n >> l >> x >> y;
  for (int i = 0; i < n; i++) {
    int w;
    scanf("%d", &w);
    v.push_back(w);
  }
  sort(v.begin(), v.end());
  if (f(x)) {
    if (f(y)) {
      printf("0\n");
    } else {
      printf("1\n%d\n", y);
    }
    return 0;
  }
  if (f(y)) {
    printf("1\n%d\n", x);
    return 0;
  }
  for (int i = 0; i < n; i++) {
    if (v[i] + x > l) {
      continue;
    }
    if (binary_search(v.begin(), v.end(), v[i] + x + y)) {
      printf("1\n%d\n", v[i] + x);
      return 0;
    }
    if (binary_search(v.begin(), v.end(), v[i] + x - y)) {
      printf("1\n%d\n", v[i] + x);
      return 0;
    }
  }
  for (int i = 0; i < n; i++) {
    if (v[i] - x < 0) {
      continue;
    }
    if (binary_search(v.begin(), v.end(), v[i] - x + y)) {
      printf("1\n%d\n", v[i] - x);
      return 0;
    }
    if (binary_search(v.begin(), v.end(), v[i] - x - y)) {
      printf("1\n%d\n", v[i] - x);
      return 0;
    }
  }
  printf("2\n%d %d\n", x, y);
  return 0;
}
