#include <bits/stdc++.h>
using namespace std;
template <class A, class B>
ostream& operator<<(ostream& o, pair<A, B>& p) {
  return o << "(" << p.first << ", " << p.second << ")";
}
template <class T>
ostream& operator<<(ostream& o, const vector<T>& v) {
  o << "{";
  for (typeof((v).begin()) it = (v).begin(); it != (v).end(); it++)
    o << *it << ", ";
  return o << "}";
}
struct debugger {
  ostream& out;
  bool first;
  void start() { first = true; }
  debugger(ostream& out) : out(out) { start(); }
  void nl() {
    out << endl;
    start();
  }
  template <class T>
  debugger& operator,(T& v) {
    if (first)
      first = false;
    else
      out << ", ";
    out << v;
    return *this;
  }
  template <class T>
  debugger& operator,(pair<T*, int> arr) {
    out << "{";
    for (typeof((arr.second) - 1) i = (0); i <= ((arr.second) - 1); i++) {
      out << arr.first[i] << ", ";
    }
    out << "}";
    return *this;
  }
} dbg(cerr);
int arr[200100];
int main() {
  long long n, l, r, Ql, Qr;
  cin >> n >> l >> r >> Ql >> Qr;
  long long sum = 0;
  for (typeof((n)-1) i = (0); i <= ((n)-1); i++) {
    cin >> arr[i];
    sum += arr[i];
  }
  long long sum1 = 0, xx = n - 1;
  long long ans = sum * r + (n - 1) * Qr;
  for (typeof((n)-1) i = (0); i <= ((n)-1); i++) {
    sum1 += arr[i];
    long long temp = sum1 * l + (sum - sum1) * r;
    if (i + 1 - (n - (i + 1)) > 1) {
      temp += (i + 1 - (n - (i + 1)) - 1) * Ql;
    } else if (i + 1 - (n - (i + 1)) < -1) {
      temp += (i + 1 - (n - (i + 1)) + 1) * (Qr) * (-1);
    }
    ans = min(temp, ans);
  }
  cout << ans << endl;
  return 0;
}
