#include <bits/stdc++.h>
using namespace std;
bool findBinary(int, int*, int, int);
int main() {
  int numberOfMarks, lengthI, distanceOfGirl, distanceOfBoy;
  int measure[100000];
  int congNu[100000];
  int truNu[100000];
  int congNam[100000];
  int truNam[100000];
  bool girl = false, boy = false;
  cin >> numberOfMarks >> lengthI >> distanceOfGirl >> distanceOfBoy;
  for (int i = 0; i < numberOfMarks; i++) {
    cin >> measure[i];
    int girlProcessedPlus = measure[i] + distanceOfGirl;
    int boyProcessedPlus = measure[i] + distanceOfBoy;
    int girlProcessedMinus = measure[i] - distanceOfGirl;
    int boyProcessedMinus = measure[i] - distanceOfBoy;
    congNu[i] = girlProcessedPlus;
    truNu[i] = girlProcessedMinus;
    congNam[i] = boyProcessedPlus;
    truNam[i] = boyProcessedMinus;
  }
  int flag = 0;
  girl = findBinary(distanceOfGirl, measure, numberOfMarks, lengthI);
  boy = findBinary(distanceOfBoy, measure, numberOfMarks, lengthI);
  if (boy && girl) {
    cout << "0" << endl;
  } else if (boy) {
    for (int i = 0; i < numberOfMarks; i++) {
      if (findBinary(congNu[i], measure, numberOfMarks, lengthI)) {
        girl = true;
        break;
      }
    }
    if (girl) {
      cout << "0" << endl;
    } else {
      cout << "1" << endl << distanceOfGirl;
    }
  } else if (girl) {
    for (int i = 0; i < numberOfMarks; i++) {
      if (findBinary(congNam[i], measure, numberOfMarks, lengthI)) {
        boy = true;
        break;
      }
    }
    if (boy) {
      cout << "0" << endl;
    } else {
      cout << "1" << endl << distanceOfBoy;
    }
  } else {
    for (int i = 0; i < numberOfMarks; i++) {
      if (findBinary(congNu[i], measure, numberOfMarks, lengthI)) {
        girl = true;
        break;
      }
    }
    for (int i = 0; i < numberOfMarks; i++) {
      if (findBinary(congNam[i], measure, numberOfMarks, lengthI)) {
        boy = true;
        break;
      }
    }
    if (boy && girl) {
      cout << "0" << endl;
    } else if (boy) {
      cout << "1" << endl << distanceOfGirl;
    } else if (girl) {
      cout << "1" << endl << distanceOfBoy;
    } else {
      for (int i = 0; i < numberOfMarks; i++) {
        if (findBinary(truNam[i], congNu, numberOfMarks, lengthI)) {
          flag = truNam[i];
          break;
        }
        if (findBinary(truNam[i], truNu, numberOfMarks, lengthI)) {
          flag = truNam[i];
          break;
        }
        if (findBinary(congNam[i], congNu, numberOfMarks, lengthI)) {
          flag = congNam[i];
          break;
        }
        if (findBinary(congNam[i], truNu, numberOfMarks, lengthI)) {
          flag = congNam[i];
          break;
        }
      }
      if (flag != 0) {
        cout << "1" << endl << flag;
      } else {
        cout << "2" << endl << distanceOfGirl << " " << distanceOfBoy;
      }
    }
  }
  return 0;
}
bool findBinary(int k, int array[], int size, int lengthI) {
  if (k >= 0 && k <= lengthI) {
    int begin = 0;
    int end = size - 1;
    int mid = (end - begin) / 2;
    while (begin <= end) {
      if (array[mid] == k && array[mid] >= 0 && array[mid] <= lengthI) {
        return true;
      }
      if (array[mid] > k) {
        end = mid - 1;
        mid = (begin + end) / 2;
      } else {
        begin = mid + 1;
        mid = (begin + end) / 2;
      }
    }
  }
  return false;
}
