#include <bits/stdc++.h>
using namespace std;
const int MAX_B = 1001;
typedef struct {
  int price;
  int cal;
} Top;
typedef struct {
  int max;
  int sumc;
  int sump;
} Status;
int numtop, price;
int maxave = 0;
Top base, item[MAX_B];
int devide(int a, int b) {
  int sum = 0;
  int realb = b;
  while (1) {
    if (a < b) break;
    sum++;
    b = realb * sum;
  }
  return sum - 1;
}
int solve() {
  maxave = devide(base.cal, base.price);
  queue<Status> Q;
  Status f;
  f.max = 0;
  f.sumc = base.cal;
  f.sump = base.price;
  Q.push(f);
  while (!Q.empty()) {
    Status now = Q.front();
    Q.pop();
    if (now.max == numtop) {
      if (maxave < devide(now.sumc, now.sump))
        maxave = devide(now.sumc, now.sump);
      continue;
    }
    for (int i = now.max + 1; i <= numtop; i++) {
      Status tmp = now;
      tmp.max = i;
      tmp.sumc += item[i].cal;
      tmp.sump += item[i].price;
      Q.push(tmp);
    }
  }
  return maxave;
}
int main() {
  cin >> numtop;
  cin >> base.price >> price;
  cin >> base.cal;
  for (int i = 1; i <= numtop; i++) {
    cin >> item[i].cal;
    item[i].price = price;
  }
  cout << solve() << endl;
  return 0;
}
