#include int ri() { int n; scanf("%d", &n); return n; } int main() { int n = ri(); int m = ri(); int x = ri(); int y = ri(); int z = ri(); int sum = 0; int cnt = 0; std::vector a; for (int i = 0; i < n; i++) { int cur = ri(); if (cur >= x) sum += cur, cnt++; else if (cur > y) a.push_back(cur); } int64_t dp[2501][51]; memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for (auto i : a) { for (int j = 2500; j >= 0; j--) { for (int k = 50; k >= 0; k--) { if (!dp[j][k]) continue; dp[j + i][k + 1] += dp[j][k]; } } } if (cnt > m) { puts("Handicapped"); return 0; } int64_t res = 0; for (int i = 0; i + cnt <= m; i++) { if (i + cnt == 0) continue; int sum_target = (i + cnt) * z; if (sum_target < sum) continue; sum_target -= sum; res += dp[sum_target][i]; } printf("%" PRId64 "\n", res); return 0; }