#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node{
    ll p;
    ll v;
}a[2010];

ll dp[2010][2010]; //dp[i][j] i表示移左边数量 j表示移右边数量

bool cmp(node x,node y){
    if(x.v==y.v) return x.p<y.p;
    return x.v>y.v;
}

int main(){
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i].v;
        a[i].p=i;
    }
    sort(a,a+n,cmp);
    
    for(int i=0;i<n;i++){
        for(int j=0;i+j<n;j++){
            int t=i+j;
            dp[i+1][j]=max(dp[i+1][j],dp[i][j]+abs(a[t].p-i)*a[t].v);
            dp[i][j+1]=max(dp[i][j+1],dp[i][j]+abs(a[t].p-(n-1-j))*a[t].v);
        }
    }
    
    ll ans=0;
    for(int i=0;i<=n;i++) ans=max(ans,dp[i][n-i]);
    cout<<ans;
    return 0;
}
