#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)1e5 + 10;
int data[maxn];
int n, l, x, y;
bool Find(int x) {
  int l = 0, r = n - 1;
  bool ok = 0;
  while (l <= r) {
    int mid = (l + r) >> 1;
    if (data[mid] == x) {
      ok = 1;
      break;
    } else if (data[mid] > x)
      r = mid - 1;
    else
      l = mid + 1;
  }
  return ok;
}
int main() {
  while (scanf("%d%d%d%d", &n, &l, &x, &y) != EOF) {
    for (int i = 0; i < n; ++i) {
      scanf("%d", &data[i]);
    }
    sort(data, data + n);
    bool a1 = 0, a2 = 0;
    for (int i = 0; i < n; ++i) {
      if (data[i] >= x) {
        int dx = data[i] - x;
        if (Find(dx)) a1 = 1;
      }
    }
    for (int i = 0; i < n; ++i) {
      if (data[i] >= y) {
        int dx = data[i] - y;
        if (Find(dx)) a2 = 1;
      }
    }
    if (a1 && a2) {
      puts("0");
    } else if (a1 || a2) {
      puts("1");
      if (!a1)
        printf("%d\n", x);
      else
        printf("%d\n", y);
    } else {
      if (Find(y - x)) {
        printf("1\n%d\n", y);
      } else {
        bool ok = 0;
        for (int i = 0; i < n; ++i) {
          if (data[i] >= x) {
            int dx = data[i] - x;
            long long tmp = y + dx;
            if (tmp <= l && Find(y + dx) || (dx >= y && Find(dx - y))) {
              ok = 1;
              printf("1\n%d\n", dx);
              return 0;
            }
          } else {
            long long dx = data[i] + x;
            if (dx > l) continue;
            if ((dx + y <= l && Find(dx + y)) || (dx >= y && Find(dx - y))) {
              ok = 1;
              printf("1\n%d\n", dx);
              return 0;
            }
          }
        }
        for (int i = 0; i < n; ++i) {
          if (data[i] >= y) {
            int dx = data[i] - y;
            long long tmp = x + dx;
            if (tmp <= l && Find(x + dx) || (dx >= x && Find(dx - x))) {
              ok = 1;
              printf("1\n%d\n", dx);
              return 0;
            }
          } else {
            long long dx = data[i] + y;
            if (dx > l) continue;
            if ((dx + x <= l && Find(dx + x)) || (dx >= x && (Find(dx - x)))) {
              ok = 1;
              printf("1\n%d\n", dx);
              return 0;
            }
          }
        }
        if (!ok) printf("2\n%d %d\n", x, y);
      }
    }
  }
  return 0;
}
