#include<bits/stdc++.h>
using namespace std;
int n,a,b,w[55],f[55][55][55][55],dui[55],cnt;
bool book[55][55][55][55];
struct lisan
{
int zhi,id;
}ls[55];
inline bool cmp(lisan x,lisan y)
{
return x.zhi<y.zhi;
}
inline int fang(int x)
{
return x*x;
}
inline int dfs(int i,int j,int x,int y)
{
if(book[i][j][x][y]) return f[i][j][x][y];
book[i][j][x][y]=1;
f[i][j][x][y]=99999999;
if(!x&&!y)
{
int mx=-1,mi=9999999;
for(int k=i;k<=j;k++) mx=max(mx,dui[w[k]]),mi=min(mi,dui[w[k]]);
f[i][j][x][y]=a+b*fang(mx-mi);
for(int k=1;k<=cnt;k++)
for(int l=k;l<=cnt;l++)
{
int huan=dfs(i,j,k,l);
f[i][j][x][y]=min(f[i][j][x][y],huan+a+b*fang(dui[l]-dui[k]));
}
return f[i][j][x][y];
}
else
{
if(i==j)
{
if(x<=w[i]&&w[i]<=y) f[i][j][x][y]=0;
return f[i][j][x][y];
}
for(int k=i;k<j;k++)
{
f[i][j][x][y]=min(f[i][j][x][y],dfs(i,k,x,y)+dfs(k+1,j,x,y));
f[i][j][x][y]=min(f[i][j][x][y],dfs(i,k,0,0)+dfs(k+1,j,x,y));
f[i][j][x][y]=min(f[i][j][x][y],dfs(i,k,x,y)+dfs(k+1,j,0,0));
}
return f[i][j][x][y];
}
}
int main()
{
cin>>n>>a>>b;
for(int i=1;i<=n;i++) cin>>ls[i].zhi,ls[i].id=i;
sort(ls+1,ls+n+1,cmp);ls[0].zhi=-1;
for(int i=1;i<=n;i++)
{
if(ls[i].zhi!=ls[i-1].zhi) cnt++;
w[ls[i].id]=cnt;dui[cnt]=ls[i].zhi;
}
cout<<dfs(1,n,0,0);
}