#include #include using namespace std; int N; long A,B,W,D[3<<17]; long b[3<<17],dp[3<<17]; long f(int id,int x){return -id*B*x+b[id];} bool check(int i,int j,int k) { if(B==0)return true; return (j-i)*(b[k]-b[j])<=(b[j]-b[i])*(k-j); } main() { cin>>N>>A>>B>>W; for(int i=0;i>D[i]; dp[0]=W; dequeP; for(long i=0;i=2&&check(P[P.size()-2],P.back(),i))P.pop_back(); P.push_back(i); while(P.size()>=2&&f(P[1],i+1)<=f(P[0],i+1))P.pop_front(); dp[i+1]=f(P[0],i+1)+D[i]-A*i+i*(i+1)/2*B; } long ans=9e18; for(long i=0;i<=N;i++)ans=min(ans,dp[i]-A*(N-i)+(N-i)*(N-i+1)/2*B); cout<