#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
int dp[2005][2005] = {0};
struct Num {
  int val, id;
} num[2005];
bool cmp(Num a, Num b) { return a.val > b.val; }
int main() {
  int i, j, n;
  scanf("%d", &n);
  for (i = 0; i < n; i++) {
    scanf("%d", &num[i].val);
    num[i].id = i;
  }
  sort(num, num + n, cmp);
  dp[1][0] = num[0].id * num[0].val;
  dp[0][1] = (n - 1 - num[0].id) * num[0].val;
  for (i = 2; i <= n; i++)
    for (j = 0; j <= i; j++)
      dp[j][i - j] = max(
          (j ? (dp[j - 1][i - j] + abs(num[i - 1].id - j + 1) * num[i - 1].val)
             : 0),
          ((i - j) ? (dp[j][i - j - 1] +
                      abs(n - i + j - num[i - 1].id) * num[i - 1].val)
                   : 0));
  int ans = 0;
  for (i = 0; i <= n; i++) ans = max(ans, dp[i][n - i]);
  printf("%d\n", ans);
}
