#include <bits/stdc++.h>
using namespace std;
void Ans(bool x) {
  if (x)
    cout << "Yes" << endl;
  else
    cout << "No" << endl;
}
const long long int INF = 1001001001;
const long long int mod = 10000000007;
int p(int i, int j) {
  if (i >= j) {
    return i - j;
  } else {
    return j - i;
  }
}
int main() {
  int n;
  cin >> n;
  vector<pair<int, int> > v(n);
  int a;
  for (int i = 0; i < (int)(n); i++) {
    cin >> a;
    v[i] = pair<int, int>(a, i);
  }
  sort(v.begin(), v.end());
  int dp[n + 1][n + 1];
  for (int i = 0; i < (int)(n + 1); i++)
    for (int j = 0; j < (int)(n + 1); j++) dp[i][j] = 0;
  dp[0][0] = 0;
  for (int i = 1; i < n + 1; i++) {
    int u = n - i;
    for (int j = 0; j < (int)(i + 1); j++) {
      if (j - 1 < 0)
        dp[j][i - j] =
            dp[j][i - j - 1] + v[u].first * p(v[u].second, n - (i - j));
      else if (i - j - 1 < 0)
        dp[j][i - j] = dp[j - 1][i - j] + v[u].first * p(v[u].second, j - 1);
      else
        dp[j][i - j] =
            max(dp[j - 1][i - j] + v[u].first * p(v[u].second, j - 1),
                dp[j][i - j - 1] + v[u].first * p(v[u].second, n - (i - j)));
    }
  }
  int ans = 0;
  for (int i = 0; i < (int)(n + 1); i++) {
    ans = max(ans, dp[i][n - i]);
  }
  cout << ans << endl;
}
