#include <bits/stdc++.h>
using namespace std;
const int inf = (int)1e9, maxn = (int)1e5 + 1;
const double eps = (double)1e-8;
const int mod = (int)1000000009;
map<int, bool> m;
int a[100001], n, l, x, y, z, one;
bool tx = 0, ty = 0, t1 = 0;
int main() {
  cin >> n >> l >> x >> y;
  for (int i = (1); i <= (n); i++) {
    scanf("%d", &(a[i]));
    m[a[i]] = 1;
  }
  for (int i = 1; i <= n; i++) {
    z = a[i];
    if (m[z - x] == 1 || m[z + x] == 1)
      tx = 1;
    else {
      if (z - x >= 0 && z - x <= l &&
          (m[z - x - y] == 1 || m[y + (z - x)] == 1)) {
        one = z - x;
        t1 = 1;
      } else if (x + z >= 0 && x + z <= l &&
                 (m[x + z - y] == 1 || m[y + (x + z)] == 1)) {
        one = x + z;
        t1 = 1;
      }
    }
    if (m[z - y] == 1 || m[y + z] == 1)
      ty = 1;
    else {
      if (z - y >= 0 && z - y <= l &&
          (m[z - y - x] == 1 || m[x + (z - y)] == 1)) {
        one = z - y;
        t1 = 1;
      }
      if (y + z >= 0 && y + z <= l &&
          (m[y + z - x] == 1 || m[x + (y + z)] == 1)) {
        one = y + z;
        t1 = 1;
      }
    }
  }
  if (tx == 1 && ty == 1) {
    cout << 0;
  } else if (t1 == 1) {
    cout << 1 << endl;
    cout << one;
  } else if (tx == 1) {
    cout << 1 << endl;
    cout << y;
  } else if (ty == 1) {
    cout << 1 << endl;
    cout << x;
  } else {
    cout << 2 << endl;
    cout << x << " " << y;
  }
  return 0;
}
