#include <bits/stdc++.h>
using namespace std;
vector<int> a;
int main() {
  int n, l, x, y;
  scanf("%d %d %d %d", &n, &l, &x, &y);
  for (int i = 0; i < n; i++) {
    int z;
    scanf("%d", &z);
    a.push_back(z);
  }
  sort(a.begin(), a.end());
  bool f1 = binary_search(a.begin(), a.end(), x);
  bool f2 = binary_search(a.begin(), a.end(), y);
  for (int i = 0; i < n; i++) {
    if (binary_search(a.begin(), a.end(), a[i] + y)) {
      f2 = true;
    }
    if (binary_search(a.begin(), a.end(), a[i] - y)) {
      f2 = true;
    }
    if (binary_search(a.begin(), a.end(), a[i] + x)) {
      f1 = true;
    }
    if (binary_search(a.begin(), a.end(), a[i] - x)) {
      f1 = true;
    }
  }
  if (f1 && f2) {
    cout << 0;
    return 0;
  }
  if (f1) {
    cout << 1 << endl;
    cout << y;
    return 0;
  }
  if (f2) {
    cout << 1 << endl;
    cout << x;
    return 0;
  }
  int result = -1;
  for (int i = 0; i < n; i++) {
    if (a[i] + x <= a[n - 1]) {
      if (binary_search(a.begin(), a.end(), a[i] + x - y) ||
          binary_search(a.begin(), a.end(), a[i] + x + y)) {
        result = a[i] + x;
        break;
      }
    }
    if (a[i] - x >= a[0]) {
      if (binary_search(a.begin(), a.end(), a[i] - x - y) ||
          binary_search(a.begin(), a.end(), a[i] - x + y)) {
        result = a[i] - x;
        break;
      }
    }
    if (a[i] + y <= a[n - 1]) {
      if (binary_search(a.begin(), a.end(), a[i] + y - x) ||
          binary_search(a.begin(), a.end(), a[i] + y + x)) {
        result = a[i] + y;
        break;
      }
    }
    if (a[i] - y >= a[0]) {
      if (binary_search(a.begin(), a.end(), a[i] - y - x) ||
          binary_search(a.begin(), a.end(), a[i] - x + y)) {
        result = a[i] - y;
        break;
      }
    }
  }
  if (result != -1) {
    cout << 1 << endl;
    cout << result;
  } else {
    cout << 2 << endl;
    cout << x << " " << y;
  }
  return 0;
}
