#include <iostream>
#include <vector>
#include <algorithm>
#include <map>
#include <cstring>
#include <queue>
#include <math.h>
using namespace std;
typedef long long int ll;

ll dp[2020][2020];

int main(){
	cin.tie(nullptr);
	ios::sync_with_stdio(false);
	int n; cin >> n;
	vector<pair<ll,int>> v(n);
	for(int i=0;i<n;i++){
		cin >> v[i].first;
		v[i].second=i;
	}
	sort(v.rbegin(),v.rend());
	for(int i=0;i<n;i++){
		for(int j=0;j<=i;j++){
			dp[j+1][i-j]=max(dp[j+1][i-j],dp[j][i-j]+v[i].first*(ll)(abs(j-v[i].second)));
			dp[i-j][j+1]=max(dp[i-j][j+1],dp[i-j][j]+v[i].first*(ll)(abs(n-(j+1)-v[i].second)));
		}
	}
	ll res=0;
	for(int i=0;i<=n;i++){
		res=max(res,dp[i][n-i]);
	}
	printf("%lld\n",res);
}