#include <bits/stdc++.h>
template <class T>
T MUL(T x, T y, T P) {
  T F1 = 0;
  while (y) {
    if (y & 1) {
      F1 += x;
      if (F1 < 0 || F1 >= P) F1 -= P;
    }
    x <<= 1;
    if (x < 0 || x >= P) x -= P;
    y >>= 1;
  }
  return F1;
}
template <class T>
T POW(T x, T y, T P) {
  T F1 = 1;
  x %= P;
  while (y) {
    if (y & 1) F1 = MUL(F1, x, P);
    x = MUL(x, x, P);
    y >>= 1;
  }
  return F1;
}
template <class T>
T gcd(T x, T y) {
  if (y == 0) return x;
  T z;
  while (z = x % y) x = y, y = z;
  return y;
}
const double pi = acos(-1.0);
const double eps = 1e-9;
const long long mod = 1000000007ll;
const int M = 8005;
const int N = 100005;
using namespace std;
int n, ql, qr, l, r, w[N];
long long a[N], b[N];
void solve() {
  while (cin >> n >> l >> r >> ql >> qr) {
    for (int i = 1; i <= n; i++) scanf("%d", &(w[i]));
    for (int i = 1; i <= n; i++) {
      a[i] = a[i - 1] + w[i] * l;
    }
    b[n + 1] = 0;
    for (int i = n; i > 0; i--) {
      b[i] = b[i + 1] + w[i] * r;
    }
    long long ans = 1e18, t1, t2, d;
    for (int i = 0, j = n + 1; i <= n && i < j; i++, j--) {
      int res = j - i - 1;
      if (res == 0)
        d = a[i] + b[j];
      else {
        long long cur = a[i] + b[j];
        t1 = cur + (res - 1) * ql + a[j - 1] - a[i];
        t2 = cur + (res - 1) * qr + b[i + 1] - b[j];
        d = min(t1, t2);
      }
      ans = min(d, ans);
    }
    cout << ans << endl;
  }
}
int main() {
  solve();
  return 0;
}
