#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const long long INF=2e18+5;
long long n,ans=INF,x,y,s,val,f[N],a[N];
bool check(long long px,long long py)
{
val=-INF;
for(long long i=1;i<=n;i++)
{
f[i]=a[i]+px;
if(f[i-1]>0) f[i]+=f[i-1];
val=max(val,f[i]);
}
val*=1ll<<py;
if(val>=s) return true;
else return false;
}
void acquire()
{
for(long long i=0;i<=40;i++)
{
long long l=0,r=2e9+5;
while(l<=r)
{
long long mid=(l+r)>>1;
if(check(mid,i)==true)
{
ans=min(ans,1ll*i*y+1ll*mid*x);
r=mid-1;
}
else l=mid+1;
}
}
cout<<ans;
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>x>>y>>s;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
acquire();
return 0;
}