//minamoto
#include<bits/stdc++.h>
#define R register
#define fp(i,a,b) for(R int i=(a),I=(b)+1;i<I;++i)
#define fd(i,a,b) for(R int i=(a),I=(b)-1;i>I;--i)
#define go(u) for(int i=head[u],v=e[i].v;i;i=e[i].nx,v=e[i].v)
template<class T>inline bool cmax(T&a,const T&b){return a<b?a=b,1:0;}
template<class T>inline bool cmin(T&a,const T&b){return a>b?a=b,1:0;}
using namespace std;
typedef long long ll;
const int N=5005;
ll f[N],res,ret;int a[N],n,A,B;
int main(){
//	freopen("testdata.in","r",stdin);
	scanf("%d%d%d",&n,&A,&B);
	fp(i,1,n)scanf("%d",&a[i]);
	++n,a[n]=n;
	fp(i,1,n){
		f[i]=1e18,ret=0;
		fd(j,i-1,0)a[j]<a[i]?(cmin(f[i],f[j]+ret),ret+=B):ret+=A;
	}
	printf("%lld\n",f[n]);
	return 0;
}