#include<iostream>
using namespace std;
const int inf=0x7fffffff;
int dp[13][111];
int man[13];
int temp;
int N;
int x,y,z,tmin;
int a[13];
inline void init()
{
for(int i=0;i<=N;i++)
{
for(int j=0;j<=110;j++)
{
dp[i][j]=inf;
}
}
return;
}
int dpstart()
{
init();
dp[1][a[1]]=a[1]*(x+y);
man[1]=a[1];
for(int i=2;i<=N;i++)
{
man[i]=max(man[i-1],a[i]);
for(int j=a[i];j<=max(a[i],man[i-1]);j++)
{
temp=inf;
for(int k=a[i-1];k<=man[i-1];k++)
{
if(k>=j)
{
if( dp[i-1][k]+(k-j)*z < temp )
{
temp=dp[i-1][k]+(k-j)*z ;
}
}
else
{
if(dp[i-1][k]+(j-k)*x < temp)
{
temp=dp[i-1][k]+(j-k)*x;
}
}
}
dp[i][j]=temp+j*y;
}
}
tmin=inf;
for(int i=0;i<=110;i++)
{
if(dp[N][i]<tmin)
{
tmin=dp[N][i];
}
}
return tmin;
}
int main()
{
while(cin>>N && N)
{
cin>>x>>y>>z;
for(int i=1;i<=N;i++)
{
cin>>a[i];
}
cout<<dpstart()<<endl;
}
return 0;
}