#include <bits/stdc++.h>
using namespace std;
int main() {
  int n, l, x, y;
  cin >> n >> l >> x >> y;
  int arr[n];
  for (int i = 0; i < n; i++) cin >> arr[i];
  bool isX = false, isY = false;
  for (int i = 0; i < n; i++) {
    int low = i, high = n - 1, mid = (low + high) / 2;
    while (low <= high) {
      if (arr[mid] - arr[i] < x) {
        low = mid + 1;
        mid = (low + high) / 2;
      } else if (arr[mid] - arr[i] > x) {
        high = mid - 1;
        mid = (low + high) / 2;
      } else if (arr[mid] - arr[i] == x) {
        isX = true;
        break;
      }
    }
    if (isX == true) break;
  }
  for (int i = 0; i < n; i++) {
    int low = i, high = n - 1, mid = (low + high) / 2;
    while (low <= high) {
      if (arr[mid] - arr[i] < y) {
        low = mid + 1;
        mid = (low + high) / 2;
      } else if (arr[mid] - arr[i] > y) {
        high = mid - 1;
        mid = (low + high) / 2;
      } else if (arr[mid] - arr[i] == y) {
        isY = true;
        break;
      }
    }
    if (isY == true) break;
  }
  if (isX == true && isY == true) {
    cout << 0;
    return 0;
  } else if (isX == true)
    cout << 1 << endl << y;
  else if (isY == true)
    cout << 1 << endl << x;
  else {
    for (int i = 1; i < n; i++) {
      if (arr[i] - (arr[i - 1] + x) == y) {
        if (arr[i - 1] + x > arr[i] && arr[i - 1] + x <= l) {
          cout << 1 << endl << arr[i - 1] + y;
          return 0;
        }
        cout << 1 << endl << arr[i - 1] + x;
        return 0;
      }
    }
    map<int, int> m;
    for (int i = 0; i < n; i++) {
      if (arr[i] - x > 0) {
        m[arr[i] - x] = x;
      }
      if (m[arr[i] + x] == y && arr[i] + x < l) {
        cout << 1 << endl << arr[i] + x;
        return 0;
      }
      m[arr[i] + x] = x;
      m[arr[i] + y] = y;
      if (arr[i] - y > 0) {
        if (m[arr[i] - y] == x) {
          cout << 1 << endl << arr[i] - y;
          return 0;
        }
      }
    }
    cout << 2 << endl << x << " " << y;
  }
  return 0;
}
