#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int n, l, x, y;
int a[MAXN];
bool check(int i, int x) {
  int j = lower_bound(a, a + n, a[i] + x) - a;
  if (j < n && a[j] == a[i] + x)
    return true;
  else
    return false;
}
int main() {
  scanf("%d%d%d%d", &n, &l, &x, &y);
  for (int i = 0; i < n; ++i) scanf("%d", a + i);
  bool b1 = false;
  bool b2 = false;
  for (int i = 0; i < n; ++i) {
    if (check(i, x)) b1 = true;
    if (check(i, y)) b2 = true;
  }
  if (b1 && b2)
    printf("0\n");
  else if (b1)
    printf("1\n%d\n", y);
  else if (b2)
    printf("1\n%d\n", x);
  else {
    bool flag = false;
    for (int i = 0; i < n; ++i) {
      if (check(i, y - x)) {
        if (a[i] + y <= l) {
          printf("1\n%d\n", a[i] + y);
          flag = true;
          break;
        } else if (a[i] - x >= 0) {
          printf("1\n%d\n", a[i] - x);
          flag = true;
          break;
        }
      }
      if (check(i, x + y)) {
        printf("1\n%d\n", a[i] + x);
        flag = true;
        break;
      }
    }
    if (!flag) printf("2\n%d %d\n", x, y);
  }
  return 0;
}
