#include <bits/stdc++.h>
using namespace std;
static const double PI = acos(-1.0);
static const double EPS = 1e-10;
inline int onbits_count(unsigned long long int b) {
  int c = 0;
  while (b != 0) {
    c += (b & 1);
    b >>= 1;
  }
  return c;
}
inline int bits_count(unsigned long long int b) {
  int c = 0;
  while (b != 0) {
    ++c;
    b >>= 1;
  }
  return c;
}
inline int toInt(string s) {
  int v;
  istringstream sin(s);
  sin >> v;
  return v;
}
template <class T>
inline string toString(T x) {
  ostringstream sout;
  sout << x;
  return sout.str();
}
inline double now() {
  struct timeval tv;
  gettimeofday(&tv, NULL);
  return (static_cast<double>(tv.tv_sec) +
          static_cast<double>(tv.tv_usec) * 1e-6);
}
inline vector<string> split(string s, char delimiter) {
  vector<string> v;
  string t;
  for (typeof(s.length()) i = (0); i != (s.length());
       i < (s.length()) ? ++i : --i) {
    if (s[i] == ' ') continue;
    ;
    if (s[i] == delimiter)
      v.push_back(t), t = "";
    else
      t += s[i];
  }
  v.push_back(t);
  return v;
}
template <typename T1, typename T2>
ostream& operator<<(ostream& s, const pair<T1, T2>& d) {
  return s << "(" << d.first << ", " << d.second << ")";
}
int main() {
  std::ios_base::sync_with_stdio(false);
  int N, A, B, C;
  cin >> N >> A >> B >> C;
  vector<int> D(N);
  for (typeof(N) i = (0); i != (N); i < (N) ? ++i : --i) {
    cin >> D[i];
  }
  sort((D).rbegin(), (D).rend());
  int price = A, cal = C;
  int ratio = cal / price;
  for (typeof(N) i = (0); i != (N); i < (N) ? ++i : --i) {
    price += B;
    cal += D[i];
    if (ratio > cal / price) {
      break;
    }
    ratio = cal / price;
  }
  cout << ratio;
}
