#include <bits/stdc++.h>
using namespace std;
int n, A, R, M;
vector<int> h;
vector<long long> sumh;
int hi(int t) {
  auto it = upper_bound(h.begin(), h.end(), t);
  return h.end() - it;
}
int leq(int t) { return n - hi(t); }
long long af(int t) {
  int it = upper_bound(h.begin(), h.end(), t) - h.begin();
  return (sumh[n] - sumh[it]) - 1ll * t * (n - it);
}
long long bf(int t) {
  int it = lower_bound(h.begin(), h.end(), t) - h.begin();
  return 1ll * t * it - sumh[it];
}
long long ans = (1ll << 60);
void tst(int t) {
  long long a = af(t), b = bf(t);
  long long p = min(a, b);
  ans = min(ans, A * b + R * a + (M - A - R) * p);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> A >> R >> M;
  M = min(M, A + R);
  h.resize(n);
  for (int i = 0; i < (int)n; i++) cin >> h[i];
  sort(h.begin(), h.end());
  sumh.resize(n + 1);
  for (int i = 0; i < (int)n; i++) sumh[i + 1] = sumh[i] + h[i];
  vector<int> hu = h;
  hu.resize(unique(hu.begin(), hu.end()) - hu.begin());
  for (int t : hu) tst(t);
  for (int i = 0; i < (int)n - 1; i++) {
    long long c = hi(hu[i]), d = leq(hu[i]);
    long long num = af(hu[i]) - bf(hu[i]);
    if (0 <= num && num <= (hu[i + 1] - hu[i]) * (c + d)) {
      long long tm = num / (c + d) + hu[i];
      for (int dt = -5; dt <= 5; dt++) tst(tm + dt);
    }
  }
  cout << ans << "\n";
}
