#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
const double pi = acos(-1);
const int N = 2e3 + 10;
int n;
struct node {
  int w, id;
} a[N];
bool cmp(node a, node b) { return a.w > b.w; }
long long dp[N][N];
long long dfs(int pos, int l, int r) {
  if (pos > n) return 0;
  if (dp[l][r]) return dp[l][r];
  long long &ans = dp[l][r];
  long long t1 = a[pos].w * abs(a[pos].id - r);
  long long t2 = a[pos].w * abs(a[pos].id - l);
  t1 += dfs(pos + 1, l, r - 1);
  t2 += dfs(pos + 1, l + 1, r);
  ans = max(t1, t2);
  return dp[l][r];
}
int main() {
  cin >> n;
  for (int i = 1; i <= (n); ++i) {
    cin >> a[i].w;
    a[i].id = i;
  }
  sort(a + 1, a + 1 + n, cmp);
  long long ans = dfs(1, 1, n);
  printf("%lld\n", ans);
}
