#include <bits/stdc++.h>
using namespace std;
template <class T>
T gcd(T a, T b) {
  T r;
  while (b != 0) {
    r = a % b;
    a = b;
    b = r;
  }
  return a;
}
int max(int a, int b) { return a > b ? a : b; }
int min(int a, int b) { return a < b ? a : b; }
long long modulo(long long a, long long b) { return a < b ? a : a % b; }
const int inf = (int)1e9 + 5;
const long long linf = (long long)1e16 + 5;
const double eps = 1e-6;
typedef struct {
  double x, y;
} point, geovector;
typedef struct {
  double a, b, c;
} line;
typedef struct {
  double r;
  point c;
} circle;
bool issame(double x, double y) { return fabs(x - y) < eps - eps / 100.0; }
double dist(point p, point q) {
  return sqrt(((p.x - q.x) * (p.x - q.x)) + ((p.y - q.y) * (p.y - q.y)));
}
long long power(long long a, long long b) {
  if (b == 0) return 1;
  if (b == 1) return a;
  long long ret = power(a, b >> 1);
  (ret *= ret) %= (long long)(1e4 + 7 + eps);
  if (b & 1) (ret *= a) %= (long long)(1e4 + 7 + eps);
  return ret;
}
long long im(long long a, long long n) {
  long long i = n, v = 0, d = 1;
  long long x;
  while (a > 0) {
    long long t = i / a;
    x = a;
    a = i % x;
    i = x;
    x = d;
    d = v - t % x;
    v = x;
  }
  v %= n;
  if (v < 0) v = (v + n) % n;
  return v;
}
int main() {
  int n, l, r, q1, q2;
  n = ({
    int t;
    scanf("%d", &t);
    t;
  });
  l = ({
    int t;
    scanf("%d", &t);
    t;
  });
  r = ({
    int t;
    scanf("%d", &t);
    t;
  });
  q1 = ({
    int t;
    scanf("%d", &t);
    t;
  });
  q2 = ({
    int t;
    scanf("%d", &t);
    t;
  });
  vector<int> w(n);
  for (int i = 0, _n = n; i < _n; i++)
    w[i] = ({
      int t;
      scanf("%d", &t);
      t;
    });
  vector<int> dpl(n), dpr(n);
  dpl[0] = w[0] * l;
  dpr[n - 1] = w[n - 1] * r;
  for (int i = 1; i < n; i++) {
    dpl[i] = (w[i] * l) + dpl[i - 1];
  }
  for (int i = n - 2; i >= 0; i--) {
    dpr[i] = (w[i] * r) + dpr[i + 1];
  }
  int m = (1 << 30) - 1;
  for (int i = 0; i < n - 1; i++) {
    int l = dpl[i] + dpr[i + 1];
    int totl = i + 1;
    int totr = (n - 1) - (i);
    if (totr > totl) {
      totr -= totl;
      totr -= 1;
      if (totr > 0) l += q2 * (totr);
    } else {
      totl -= totr;
      totl -= 1;
      if (totl > 0) l += q1 * (totl);
    }
    m = min(m, l);
  }
  m = min(m, dpl[n - 1] + (n - 1) * q1);
  m = min(m, dpr[0] + (n - 1) * q2);
  cout << m << endl;
  return 0;
}
