#include <bits/stdc++.h>
using namespace std;
template <class T>
void read(T &u) {
  u = 0;
  char c = getchar();
  long long flag = 0;
  while (c < '0' || c > '9') flag |= (c == '-'), c = getchar();
  while (c >= '0' && c <= '9')
    u = (u << 3) + (u << 1) + (c ^ 48), c = getchar();
  if (flag) u = -u;
}
template <class T>
void write(T u) {
  if (u < 0) printf("-"), u = -u;
  if (u < 10)
    putchar(48 + u);
  else
    write(u / 10), putchar(48 + u % 10);
}
void write(char u) { putchar(u); }
template <class T, class... Arg>
void read(T &u, Arg &...v) {
  read(u);
  read(v...);
}
template <class T, class... Arg>
void write(T u, Arg... v) {
  write(u);
  write(v...);
}
template <class T>
bool checkmin(T &a, T b) {
  return (b < a ? a = b, 1 : 0);
}
template <class T>
bool checkmax(T &a, T b) {
  return (b > a ? a = b, 1 : 0);
}
template <class T>
T _min(T a, T b) {
  return (a < b ? a : b);
}
template <class T>
T _max(T a, T b) {
  return (a > b ? a : b);
}
const long long mod = 998244353, N = 400005;
long long n, a, b, k;
long long h[N], cnt[N];
void init() {
  read(n, a, b, k);
  for (long long i = 1; i <= n; ++i) {
    read(h[i]);
    h[i] %= (a + b);
    if (h[i] == 0) h[i] = a + b;
  }
  for (long long i = 1; i <= n; ++i) {
    if (h[i] <= a)
      cnt[i] = 0;
    else {
      if (h[i] % a == 0)
        cnt[i] = h[i] / a - 1;
      else
        cnt[i] = h[i] / a;
    }
  }
  sort(cnt + 1, cnt + n + 1);
  for (long long i = 1; i <= n; ++i) {
    cnt[i] += cnt[i - 1];
  }
}
void solve() {
  long long ans = 0;
  for (long long i = 1; i <= n; ++i) {
    if (cnt[i] <= k) ans = i;
  }
  write(ans, '\n');
}
int main() {
  int t = 1;
  while (t--) {
    init();
    solve();
  }
  return 0;
}
