#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3fLL;
const double EPS = 1e-8;
const int MOD = 1000000007;
const int dy[] = {1, 0, -1, 0}, dx[] = {0, -1, 0, 1};
const int dy8[] = {1, 1, 0, -1, -1, -1, 0, 1},
          dx8[] = {0, -1, -1, -1, 0, 1, 1, 1};
template <typename T, typename U>
inline bool chmax(T &a, U b) {
  return a < b ? (a = b, true) : false;
}
template <typename T, typename U>
inline bool chmin(T &a, U b) {
  return a > b ? (a = b, true) : false;
}
struct IOSetup {
  IOSetup() {
    cin.tie(nullptr);
    ios_base::sync_with_stdio(false);
    cout << fixed << setprecision(20);
  }
} iosetup;
int main() {
  int n;
  cin >> n;
  vector<int> a(n);
  for (int i = (0); i < (n); ++i) cin >> a[i];
  ll ans = 0;
  if (n % 2 == 0) {
    vector<pair<int, int>> tmp(n / 2);
    for (int i = (0); i < (n / 2); ++i) tmp[i] = {a[i], -i};
    sort((tmp).begin(), (tmp).end());
    for (int i = n - 1; i >= n / 2; --i) {
      auto [ai, idx] = tmp.back();
      tmp.pop_back();
      idx = -idx;
      ans += 1LL * ai * (i - idx);
    }
    tmp.resize(n / 2);
    for (int i = (0); i < (n / 2); ++i) tmp[i] = {a[n / 2 + i], n / 2 + i};
    sort((tmp).begin(), (tmp).end());
    for (int i = (0); i < (n / 2); ++i) {
      auto [ai, idx] = tmp.back();
      tmp.pop_back();
      ans += 1LL * ai * (idx - i);
    }
  } else {
    function<ll(int, int)> solve = [&](int x, int y) {
      ll ans1 = 0;
      vector<pair<int, int>> tmp(x);
      for (int i = (0); i < (x); ++i) tmp[i] = {a[i], -i};
      sort((tmp).begin(), (tmp).end());
      for (int i = n - 1; !tmp.empty(); --i) {
        auto [ai, idx] = tmp.back();
        tmp.pop_back();
        idx = -idx;
        ans1 += 1LL * ai * (i - idx);
      }
      tmp.resize(y);
      for (int i = (0); i < (y); ++i) tmp[i] = {a[x + i], x + i};
      sort((tmp).begin(), (tmp).end());
      for (int i = (0); i < (y); ++i) {
        auto [ai, idx] = tmp.back();
        tmp.pop_back();
        ans1 += 1LL * ai * (idx - i);
      }
      return ans1;
    };
    int x = n / 2, y = (n + 1) / 2;
    ans = max(solve(x, y), solve(y, x));
  }
  cout << ans << '\n';
  return 0;
}
