#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
constexpr int MODC = 998244353;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n;
  cin >> n;
  long long r1, r2, r3;
  cin >> r1 >> r2 >> r3;
  r3 = r3;
  long long d;
  cin >> d;
  vector<long long> a(n);
  for (auto& i : a) {
    cin >> i;
  }
  vector<long long> dp1(n - 1, 0);
  vector<long long> dp2(n - 1, 0);
  for (int i = 0; i < n - 1; ++i) {
    long long d1 = a[i] * r1 + r3 + d;
    long long d2 = min(r1 + r2 + d, a[i] * r1 + 2 * r1 + d);
    if (i == 0) {
      dp1[i] = d1;
      dp2[i] = d2 + d * 2;
    } else {
      dp1[i] = min(dp1[i - 1] + d1, dp2[i - 1] + d2);
      dp2[i] = dp1[i - 1] + d2 + d * 2;
    }
  }
  long long d1 = a[n - 1] * r1 + r3;
  long long d2 = min(r1 + r2, a[n - 1] * r1 + 2 * r1);
  long long ans = min(min(dp1[n - 2] + d1, dp1[n - 2] + d2 + d * 2),
                      dp2[n - 2] + min(d2, d1 - d));
  cout << ans << '\n';
  return 0;
}
