#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[2010][2010],v[2010];//取了i个有j个在左
int n;
int main()
{
int i,j,r;
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d",&v[i]);
for(i=1;i<=n;i++)//天数&取了的个数
{
for(j=0;j<=i;j++)//左边取了j个
{
r=i-j;//右边取了i-j个
dp[i][j]=max(dp[i-1][j-1]+v[j]*i,dp[i-1][j]+v[n-r+1]*i);//(左边取了j-1个了,那么现在就要取左边第j个,共取i-1个,左边取了j个 ,则右边已取i-j-1个,就要取右边第n-(i-j-1)个)
}
}
int ans=0;
for(j=1;j<=n;j++)ans=max(ans,dp[n][j]);
printf("%d",ans);
return 0;
}