#include <bits/stdc++.h>
int rec(int, int, int);
using namespace std;
int n;
int k_n;
int k_prise, t_prise;
vector<int> topi;
vector<vector<int> > dp;
int main() {
  cin >> n;
  cin >> k_prise >> t_prise;
  cin >> k_n;
  dp.resize(n + 1);
  int p = k_prise + t_prise * n;
  topi.resize(n + 1);
  for (int i = 1; i < n + 1; i++) {
    int tmp;
    dp[i - 1].resize(p + 1);
    cin >> tmp;
    topi[i] = tmp;
    ;
  }
  dp[n].resize(p + 1);
  for (int i = k_prise; i <= p; i++) {
    dp[0][i] = k_n;
  }
  for (int i = 1; i <= n; i++) {
    for (int j = k_prise; j <= p; j++) {
      dp[i][j] = dp[i - 1][j];
      if (k_prise + t_prise < p)
        dp[i][j] = max(dp[i][j], dp[i - 1][j - t_prise] + topi[i]);
    }
  }
  int ans = 0;
  for (int i = k_prise; i <= p; i++) ans = max(ans, dp[n][i] / i);
  cout << ans << endl;
  return 0;
}
int rec(int i, int cal, int prise) {
  if (dp[i][prise] > -1) {
    return dp[i][prise];
  }
  int res;
  if (i == n) {
    res = cal / prise;
    dp[i][prise] = res;
  } else {
    int n1 = rec(i + 1, cal, prise);
    int n2 = rec(i + 1, cal + topi[i], prise + t_prise);
    res = max(n1, n2);
    if (res == n2)
      dp[i][prise + t_prise] = res;
    else
      dp[i][prise] = res;
  }
  return res;
}
