#include <iostream>
#include <queue>
#define llint long long
#define rep(x, s, t) for(llint x = s; i <= t; x++)

using namespace std;

llint n, p, q;
llint c[500005];
priority_queue<llint, vector<llint>, greater<llint> > Q;

int main(void)
{
  cin >> n >> p >> q;
  rep(i, 1, n) cin >> c[i];

  llint sum = 0;
  rep(i, 1, n){
    Q.push(c[i] + i*p);
    sum += c[i];
  }

  llint ans = -1e18, s = 0;
  rep(i, 0, n){
    llint tmp = (i*(q-1) + i*(i+1)) * p;
    tmp += sum - s;
    ans = max(ans, tmp);
    if(Q.size()){
      s += Q.top();
      Q.pop();
    }
  }
  cout << ans << endl;

  return 0;
}

