#include <bits/stdc++.h>
using namespace std;
static const int INF = 0x3f3f3f3f;
static const long long INFL = 0x3f3f3f3f3f3f3f3fLL;
template <typename T, typename U>
static void amin(T &x, U y) {
  if (y < x) x = y;
}
template <typename T, typename U>
static void amax(T &x, U y) {
  if (x < y) x = y;
}
int main() {
  int n;
  int p;
  int q;
  int r;
  while (~scanf("%d%d%d%d", &n, &p, &q, &r)) {
    vector<int> a(n);
    for (int i = 0; i < n; ++i) scanf("%d", &a[i]);
    vector<long long> maxR(n + 1);
    maxR[n] = -INFL;
    for (int i = n - 1; i >= 0; --i)
      maxR[i] = max(maxR[i + 1], (long long)r * a[i]);
    long long maxL = -INFL;
    long long ans = -INFL;
    for (int(i) = 0; (i) < (int)(n); ++(i)) {
      amax(maxL, (long long)p * a[i]);
      amax(ans, maxL + (long long)q * a[i] + maxR[i]);
    }
    printf("%lld\n", ans);
  }
  return 0;
}
