#include #include using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 10000000000000001 vector> get(vector a,long long X){ vector dp(a.size()+1,vector(3,-Inf)); dp[0][0] = 0LL; rep(i,a.size()){ rep(j,3){ long long cost = a[i]; if(j==1)cost = X; dp[i+1][j] = max(dp[i+1][j],dp[i][j] + cost); if(j==0)cost = X; else cost = a[i]; if(j!=2){ dp[i+1][j+1] = max(dp[i+1][j+1],dp[i][j] + cost); } } } return dp; } int main(){ int N; long long X,Y; cin>>N>>X>>Y; vector a(N); rep(i,N){ cin>>a[i]; } auto r0 = get(a,X); reverse(a.begin(),a.end()); auto r1 = get(a,Y); reverse(a.begin(),a.end()); for(int i=1;i