///貪欲でやっても自炊は何回それまでに自炊したかによって幸福度が決まるので、無理
//ヒント、k回自炊したとしたら、ということは、
//k回自炊すると仮定すれば、自炊による幸福度の数は決まる
//k回で仮定して前から順に埋めてけばいいんじゃね
//それではダメか、どのタイミングで自炊したかも必要かも
//自炊だけか、食堂だけか、どうすれば良いのかわからない
#include<iostream>
#include<algorithm>
#include<utility>
#include<numeric>
using namespace std;

bool compare_happiness(const pair<long long,long long> x,const pair<long long,long long> y){
  return x.second < y.second;
}

int main(){
  long long N,P,Q;
  pair<long long,long long> C[500000+10];
  cin >> N >> P >> Q;
  for(int i=0;i<N;i++){
    long long c;
    cin >> c;
    C[i].first=i+1;//何日目か
    C[i].second=c+(i+1)*P;//
  }
  sort(C,C+N,compare_happiness);
  long long a1=0;//sum_pairs(C,N,P);//そこまででmaxのものを保存
  long long a2=0;//sum_pairs(C,N,P);//ここに順に足していく
  for(int i=0;i<N;i++){
    a2+=(Q-C[i].first+2*i+1)*P;
    a1=max(a1+C[i].second-C[i].first*P,a2);
  }
  cout << a1 << endl;
  //int型では色々だめ
  //本質的じゃなくないですか
}

