#include using namespace std; const int MAX = 1e5 + 10; int n; long long d[MAX]; long long x, y; int main() { scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%lld", d + i); } scanf("%lld%lld", &x, &y); sort(d, d + n); if (x == 0 && y == 0) { cout << 0 << endl; return 0; } x = llabs(x); y = llabs(y); for (int i = 0; i < n; i++) { if (d[i] == x + y) { cout << 1 << endl; return 0; } } for (int i = 0; i < n; i++) { int low = i + 1, high = n; while (high - low > 5) { int mid = (high + low) / 2; if (d[i] + d[mid] <= x + y) { low = mid; } else { high = mid; } } for (int j = low; j <= high; j++) { if (d[i] + d[j] == x + y) { cout << 2 << endl; return 0; } } } // 遠くに行って戻ってくる reverse(d, d + n); for (int i = 0; i < n; i++) { int low = i + 1, high = n; while (high - low > 5) { int mid = (high + low) / 2; if (d[i] - d[mid] <= x + y) { high = mid; } else { low = mid; } } for (int j = low; j <= high; j++) { if (d[i] - d[j] == x + y) { cout << 2 << endl; return 0; } } } cout << -1 << endl; }