#include <bits/stdc++.h>
using namespace std;
long long int arr[100009];
bool bsch(long long int x, long long int n) {
  long long int lo = 0, hi = n, mid;
  while (lo <= hi) {
    mid = (hi + lo) / 2;
    if (arr[mid] == x)
      return true;
    else if (arr[mid] < x)
      lo = mid + 1;
    else
      hi = mid - 1;
  }
  return false;
}
int main() {
  long long int n, l, x, y, i, j, c = 2;
  bool a = false, b = false;
  cin >> n >> l >> x >> y;
  for (i = 0; i < n; i++) {
    scanf("%I64d", &arr[i]);
  }
  bool f = false;
  for (i = 0; i < n; i++) {
    if (arr[i] + x > arr[n - 1]) break;
    f = bsch(arr[i] + x, n);
    if (f) {
      a = true;
      c--;
      break;
    }
  }
  f = false;
  for (i = 0; i < n; i++) {
    if (arr[i] + y > arr[n - 1]) break;
    f = bsch(arr[i] + y, n);
    if (f) {
      b = true;
      c--;
      break;
    }
  }
  if (c == 0) {
    cout << c;
    return 0;
  }
  if (a && !b) {
    if (y <= l) {
      cout << "1" << endl << y;
      return 0;
    }
  }
  if (!a && b) {
    if (x <= l) {
      cout << "1" << endl << x;
      return 0;
    }
  }
  f = false;
  for (i = 0; i < n; i++) {
    if (arr[i] + x + y <= l) {
      f = bsch(arr[i] + x + y, n);
      if (f) {
        cout << "1" << endl;
        cout << arr[i] + x;
        return 0;
      }
    }
    if (arr[i] + x <= l && arr[i] + x - y <= l && arr[i] + x - y >= 0) {
      f = bsch(arr[i] + x - y, n);
      if (f) {
        cout << "1" << endl;
        cout << arr[i] + x;
        return 0;
      }
    }
    if (arr[i] - x >= 0 && arr[i] - x + y <= l && arr[i] - x + y >= 0) {
      f = bsch(arr[i] - x + y, n);
      if (f) {
        cout << "1" << endl;
        cout << arr[i] - x;
        return 0;
      }
    }
    if (arr[i] - x >= 0 && arr[i] - x - y <= l && arr[i] - x - y >= 0) {
      f = bsch(arr[i] - x - y, n);
      if (f) {
        cout << "1" << endl;
        cout << arr[i] - x;
        return 0;
      }
    }
    if (arr[i] + y <= l && arr[i] + y - x <= l && arr[i] + y - x >= 0) {
      f = bsch(arr[i] + y - x, n);
      if (f) {
        cout << "1" << endl;
        cout << arr[i] + y;
        return 0;
      }
    }
    if (arr[i] - y >= 0 && arr[i] - y + x <= l && arr[i] - y + x >= 0) {
      f = bsch(arr[i] - y + x, n);
      if (f) {
        cout << "1" << endl;
        cout << arr[i] - y;
        return 0;
      }
    }
    if (arr[i] - y >= 0 && arr[i] - y - x <= l && arr[i] - y - x >= 0) {
      f = bsch(arr[i] - y - x, n);
      if (f) {
        cout << "1" << endl;
        cout << arr[i] - y;
        return 0;
      }
    }
  }
  cout << "2" << endl;
  cout << x << " " << y;
  return 0;
}
