#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#define mm(a,x) memset(a,x,sizeof(a))
#define sync std::ios::sync_with_stdio(false);std::cin.tie(0)
#define ll long long
using namespace std;
struct A{
    int id;
    ll a;
    bool operator<(A o){
        return a>o.a;
    }
}a[2010];
ll dp[2010][2010];
int main(void)
{
    sync;
    int n;
    cin>>n;
    for(int i=1;i<=n;++i)
    {
        cin>>a[i].a;
        a[i].id=i;
    }
    sort(a+1,a+1+n);
    for(int i=0;i<=n;++i)
    {
        for(int j=0;i+j<=n;++j)
        {
            int k=i+j+1;
            ll v=a[k].a;
            int p=a[k].id;
            dp[i+1][j]=max(dp[i+1][j],dp[i][j]+v*abs(p-i-1));
            dp[i][j+1]=max(dp[i][j+1],dp[i][j]+v*abs(p-(n-j)));
        }
    }
    ll res=0;
    for(int i=0;i<=n;++i)
        res=max(res,dp[i][n-i]);
    cout<<res<<endl;
    return 0;
}