/*#include <bits/stdc++.h>
using namespace std;*/
/*1432 1243 1234 1324
14253 12534 12345
02112
1 6 2 7 3 8 4 9 5 10
2413 2134 1234
142536 125364 123645 123456
534621 534612 546123 561234*//*
int main()
{
int brr[200001], crr[200001];
vector<int> arr;
int n;
scanf("%d", &n);
for(int i=0;i<n;i++){
scanf("%d", &brr[i]);
arr.push_back(brr[i]);
}
sort(arr.begin(), arr.end());
for(int i=0;i<n;i++)
{
crr[arr[i]]=i+1;
}
int cnt=1;
for(int i=1;i<n;i++)
{
if(crr[brr[i]]!=crr[brr[i-1]]+1)
{
//printf("%d %d\n", crr[brr[i]], crr[brr[i-1]]+1);
cnt++;
}
}
if(cnt<=2)
printf("%d", cnt);
else
{
printf("3");
}
}*/
/*
#include <bits/stdc++.h>
using namespace std;
int gcd(int x, int y)
{
if(y==0)
return x;
return gcd(y, x%y);
}
int main()
{
vector<pair<float, pair<int, int> > > arr;
int n;
scanf("%d", &n);
//printf("%d", gcd(8, 12));
for(int i=2;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(gcd(i, j)==1)
arr.push_back({(float)j/(float)i, {j, i}});
}
}
sort(arr.begin(), arr.end());
printf("0/1\n");
for(int i=0;i<arr.size();i++)
{
printf("%d/%d\n", arr[i].second.first, arr[i].second.second);
}
printf("1/1");
}*/
/*
#include <bits/stdc++.h>
using namespace std;
vector<int> arr;
vector<int> segment;
int makesegment(int node, int start, int End)
{
if(start==End)
return segment[node]=arr[start];
int mid=(start+End)/2;
return segment[node]=makesegment(node*2, start, mid)+makesegment(node*2+1, mid+1, End);
}
int Sum(int node, int start, int End, int right, int left)
{
if(right<start||left>End)return 0;
if(right>=End&&left<=start)
return segment[node];
int mid=(start+End)/2;
int lsum=Sum(node*2, start, mid, right, left);
int rsum=Sum(node*2+1, mid+1, End, right, left);
return lsum+rsum;
}
int main()
{
int n;
scanf("%d", &n);
segment.resize(4*n+40);
arr.resize(n+10);
int total=0;
for(int i=0;i<n;i++)
{
scanf("%d", &arr[i]);
total+=arr[i];
}
float ans=987654321;
makesegment(1, 0, n-1);
//printf("%d ", segment[5]);
for(int i=1;i<n-1;i++)
{
for(int j=1;j<=i;j++)
{
int sum=Sum(1, 0, n-1, i, j);
int res=total-sum;
ans=min(ans, (float)res/(float)(n-i+j-1));
//printf("%d %f %d %d\n", sum, ans, i, j);
}
}
printf("%.3f", ans);
}
*/
/*
#include <bits/stdc++.h>
using namespace std;
char poopkee[30];
int top=1;
void dab(int a, int b, int c)
{
if(a<b){
return ;}
if(c==0)
{
poopkee[++top]=' ';
poopkee[++top]=b+'0';
int temp=top;
if(a!=b){
dab(a, b+1, 0);
top=temp;
dab(a, b+1, 1);
top=temp;
dab(a, b+1, 2);
top=temp;
top--;
top--;}
}
if(c==1)
{
poopkee[++top]='+';
poopkee[++top]=b+'0';
int temp=top;
if(a!=b){
dab(a, b+1, 0);
top=temp;
dab(a, b+1, 1);
top=temp;
dab(a, b+1, 2);
top=temp;
top--;
top--;}
}
if(c==2)
{
poopkee[++top]='-';
poopkee[++top]=b+'0';
int temp=top;
if(a!=b){
dab(a, b+1, 0);
top=temp;
dab(a, b+1, 1);
top=temp;
dab(a, b+1, 2);
top=temp;
top--;
top--;}
}
if(a==b)
{
int cur=0;
int cmd=1;
int p=1;
for(int i=2;i<=top;i++)
{
if(poopkee[i]==' ')
continue;
if(poopkee[i]<='9'&&poopkee[i]>='0')
{
p=p*10+poopkee[i]-'0';
}
if(poopkee[i]>'9'||poopkee[i]<'0'||i==top)
{
if(cmd==1)
cur+=p;
else
cur-=p;
if(poopkee[i]=='+')
cmd=1;
else
cmd=0;
p=0;
}
}
if(cur==0)
{
for(int i=1;i<=top;i++)
printf("%c", poopkee[i]);
//printf(" %d", cur);
printf("\n");
}
}
}
int main()
{
int n;*/
/*char k;
k=1;
printf("%c", k+'0');*//*
scanf("%d", &n);
poopkee[1]='1';
//3printf("%d\n", top);
dab(n, 2, 0);
top=1;
//printf("%d\n", top);
dab(n, 2, 1);
top=1;
//printf("%d", top);
dab(n, 2, 2);
}
*/
/*
#include <bits/stdc++.h>
using namespace std;
int arr[1001]={};
bool check(int x, int y)
{
if(x==0)
return true;
if(y>1000)
return false;
check(arr[x], y+1);
}
int main()
{
int n;
int cnt=0;
scanf("%d", &n);
for(int i=1;i<=n;i++)
{
scanf("%d", &arr[i]);
}
for(int i=1;i<=n;i++)
{
int x, y;
x=i;
int l=0;
while(l<=1000)
{
if(x==0)
{
cnt++;
break;
}
x=arr[x];
l++;
}
}
printf("%d", cnt);
}*/
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<double> arr;
double dp[2001]={};
for(int i=1;i<=2000;i++)
dp[i]=987654321;
int n, a, b;
arr.push_back(-1);
scanf("%d %d %d", &n, &a, &b);
for(int i=1;i<=n;i++)
{
double k;
scanf("%lf", &k);
arr.push_back(k);
}
sort(arr.begin(), arr.end());
dp[1]=a;
dp[0]=0;
for(int i=2;i<=n;i++)
{
dp[i]=min(a+dp[i-1], (arr[i]-arr[1])*b/2+a);
for(int j=1;j<i;j++)
{
dp[i]=min(dp[i], dp[j]+a+(arr[i]-arr[j+1])*b/2);
}
}
if(dp[n]/1.00==(int)dp[n])
printf("%.0f", dp[n]);
else
printf("%.1f", dp[n]);
}/*
123456789
.. . . .*/



