#include <bits/stdc++.h>
using namespace std;
struct Node {
  int v;
  int weizhi;
};
Node a[2005];
bool cmp(Node a, Node b) {
  if (a.v > b.v)
    return true;
  else if (a.v == b.v && a.weizhi < b.weizhi)
    return true;
  else
    return false;
}
long long dp[2005][2005];
long long ans;
int zuo;
int you;
int main() {
  int n;
  cin >> n;
  zuo = 1;
  you = n;
  for (int i = 1; i <= n; i++) {
    cin >> a[i].v;
    a[i].weizhi = i;
  }
  sort(a + 1, a + 1 + n, cmp);
  for (int i = 0; i <= n; i++) {
    for (int j = 0; j <= n; j++) {
      dp[i + 1][j] =
          max(dp[i + 1][j],
              dp[i][j] + abs(a[i + j + 1].weizhi - n + i) * a[i + j + 1].v);
      ans = max(ans, dp[i + 1][j]);
      dp[i][j + 1] =
          max(dp[i][j + 1],
              dp[i][j] + abs(a[i + j + 1].weizhi - j - 1) * a[i + j + 1].v);
      ans = max(ans, dp[i][j + 1]);
    }
  }
  cout << ans;
}
