#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
	ll wei,num;
}a[2005];
ll dp[2005][2005]={0};
ll n;
bool cmp(node a1,node a2)
{
	return a1.num>a2.num;
}
ll fen(ll num,ll l,ll r)
{
	if(num>n) return 0;
	if(l==r) return dp[l][r]=a[num].num*abs(a[num].wei-l);
	if(dp[l][r]!=-1) return dp[l][r];
	ll ans1=fen(num+1,l+1,r)+a[num].num*abs(a[num].wei-l);
	ll ans2=fen(num+1,l,r-1)+a[num].num*abs(a[num].wei-r);
	return dp[l][r]=max(ans1,ans2);
}
int main(void)
{

	scanf("%lld",&n);
	for(ll i=1;i<=n;i++)
	{
		scanf("%lld",&a[i].num);
		a[i].wei=i;
	}
	sort(a+1,a+n+1,cmp);
	memset(dp,-1,sizeof(dp));
	fen(1,1,n);
	cout<<fen(1,1,n);
}