#include <bits/stdc++.h>
void swap(int *x, int *y) {
  int a = *x;
  int b = *y;
  *x = b;
  *y = a;
}
int factorial(int n);
int sum(int n, int *);
int ave(int n, int *);
int min(int n, int *), min(int n, int m);
int max(int n, int *), max(int n, int m);
int main() {
  int N, A, B, C, D[200];
  scanf("%d", &N);
  scanf("%d %d", &A, &B);
  scanf("%d", &C);
  for (int i = 1; i <= N; i++) {
    scanf("%d", &D[i]);
  }
  int Ds[200];
  for (int i = 1; i <= pow(N, 2); i++) {
    for (int j = 1; j <= N - 1; j++) {
      if (D[j] < D[j + 1]) {
        swap(&D[j], &D[j + 1]);
      }
    }
  }
  for (int i = 1; i <= N; i++) {
    printf("%d\n", D[i]);
  }
  int s = 0;
  D[0] = 0;
  int n;
  for (int i = 1; i <= N; i++) {
    if ((C + s) * (A + i * B) >= (C + s + D[i]) * (A + (i - 1) * B)) {
      n = i - 1;
      break;
    }
    s += D[i];
  }
  printf("%d\n", (C + s) / (A + n * B));
  return 0;
}
int factorial(int n) {
  if (n > 0) {
    return n * factorial(n - 1);
  } else {
    return 1;
  }
}
int sum(int n, int *all) {
  int total = 0;
  for (int i = 0; i < n; ++i) {
    total += all[i];
  }
  return total;
}
int ave(int n, int *all) {
  int total = 0;
  for (int i = 0; i < n; ++i) {
    total += all[i];
  }
  return total / n;
}
int min(int n, int *all) {
  int min = all[0];
  for (int i = 1; i < n; ++i) {
    if (all[0] > all[i]) {
      min = all[i];
    }
  }
  return min;
}
int max(int n, int *all) {
  int max = all[0];
  for (int i = 1; i < n; ++i) {
    if (all[0] < all[i]) {
      max = all[i];
    }
  }
  return max;
}
int max(int n, int m) {
  if (n >= m) {
    return n;
  } else {
    return m;
  }
}
int min(int n, int m) {
  if (n >= m) {
    return m;
  } else {
    return n;
  }
}
