#include <bits/stdc++.h>
int t_cal[100];
int t_flag[100];
double max_cal(int a, int b, int c, int cnt, int n, int sum_calo) {
  int i;
  double t, max_per_cal;
  if (n <= cnt) {
    return 0;
  }
  ++cnt;
  for (i = 0; i < n; i++) {
    if (t_flag[i] == 1) {
      continue;
    }
    t_flag[i] = 1;
    max_per_cal = ((sum_calo + t_cal[i] + c) / (double)(a + cnt * b));
    t = max_cal(a, b, c, cnt, n, sum_calo + t_cal[i]);
    if (max_per_cal < t) {
      max_per_cal = t;
    }
    t_flag[i] = 0;
  }
  return max_per_cal;
}
int main(void) {
  int i, n, a, b, c;
  double max, plane;
  while (EOF != scanf("%d", &n)) {
    if (n == 0) {
      break;
    }
    scanf("%d %d", &a, &b);
    scanf("%d", &c);
    for (i = 0; i < n; i++) {
      scanf("%d", &t_cal[i]);
    }
    max = max_cal(a, b, c, 0, n, 0);
    plane = ((c) / (double)(a));
    printf("%d\n", (int)((max < plane) ? (plane) : (max)));
  }
  return 0;
}
