#include <bits/stdc++.h>   using namespace std;   int main() {     long long n, l, x, y;     set<long long> Set;     while (cin >> n >> l >> x >> y) {       for (int i = 1; i <= n; ++i) {         long long t;         scanf( %I64d , &t);         Set.insert(t);       }       bool checkx = 0;       bool checky = 0;       for (set<long long>::iterator it = Set.begin(); it != Set.end(); it++) {         if (Set.find(*it + x) != Set.end()) {           checkx = 1;         }         if (Set.find(*it + y) != Set.end()) {           checky = 1;         }         if (checkx && checky) {           break;         }       }       if (checkx && checky) {         cout << 0 << endl;         break;       }       if (checkx) {         cout << 1 << endl;         cout << y << endl;         break;       }       if (checky) {         cout << 1 << endl;         cout << x << endl;         break;       }       bool find = 0;       long long ans = 0;       for (set<long long>::iterator it = Set.begin(); it != Set.end(); it++) {         if ((*it + x <= l) && Set.find(*it + x + y) != Set.end()) {           find = 1;           ans = *it + x;           break;         }         if ((*it + x <= l) && Set.find(*it + x - y) != Set.end()) {           find = 1;           ans = *it + x;           break;         }         if ((*it - x >= 0) && Set.find(*it - x + y) != Set.end()) {           find = 1;           ans = *it - x;           break;         }         if ((*it - x >= 0) && Set.find(*it - x - y) != Set.end()) {           find = 1;           ans = *it - x;           break;         }       }       if (find) {         cout << 1 << endl;         cout << ans << endl;         break;       }       cout << 2 << endl;       cout << x <<     << y << endl;     }     return 0;   }   