#include <bits/stdc++.h>
const long long INF = 1LL << 60;
const long long MOD = 1000000007;
using namespace std;
using ll = long long;
template <class S, class T>
inline bool chmax(S &a, const T &b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class S, class T>
inline bool chmin(S &a, const T &b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
inline ll msb(ll v) { return 1 << (31 - __builtin_clzll(v)); }
inline ll devc(ll x, ll y) { return (x + y - 1) / y; }
struct IoSetup {
  IoSetup() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    cout << fixed << setprecision(10);
    cerr << fixed << setprecision(10);
  }
} iosetup;
template <typename T1, typename T2>
ostream &operator<<(ostream &os, const pair<T1, T2> &p) {
  os << p.first << " " << p.second;
  return os;
}
template <typename T1, typename T2>
istream &operator>>(istream &is, pair<T1, T2> &p) {
  is >> p.first >> p.second;
  return is;
}
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
  for (int i = 0; i < (int)v.size(); ++i) {
    os << v[i] << (i + 1 != v.size() ? " " : "");
  }
  return os;
}
template <typename T>
istream &operator>>(istream &is, vector<T> &v) {
  for (T &in : v) is >> in;
  return is;
}
template <typename T>
vector<T> cumsum(const vector<T> &X) {
  vector<T> res(X.size() + 1, 0);
  for (int i = 0; i < X.size(); ++i) res[i + 1] += res[i] + X[i];
  return res;
}
template <typename S, typename T, typename F>
pair<T, T> bisearch(S left, T right, F f) {
  while (abs(right - left) > 1) {
    T mid = (right + left) / 2;
    if (f(mid))
      right = mid;
    else
      left = mid;
  }
  return {left, right};
}
template <typename S, typename T, typename F>
double trisearch(S left, T right, F f, double precision = 1e-10) {
  double low = left, high = right;
  while (high - low > precision) {
    double mid_left = high / 3 + low * 2 / 3;
    double mid_right = high * 2 / 3 + low / 3;
    if (f(mid_left) >= f(mid_right))
      low = mid_left;
    else
      high = mid_right;
  }
  return high;
}
int main() {
  ll N;
  cin >> N;
  vector<ll> A(N);
  cin >> A;
  vector<tuple<ll, ll, ll>> X;
  for (ll i = 0; i < (N); ++i)
    for (ll j = 0; j < (N); ++j)
      if (i != j) X.push_back({abs(i - j) * A[i], i, j});
  sort((X).rbegin(), (X).rend());
  vector<ll> start(N, 0);
  vector<ll> done(N, 0);
  ll ans = 0;
  for (ll i = 0; i < ((ll)X.size()); ++i) {
    auto [v, x, y] = X[i];
    if (start[x]) continue;
    if (!done[y]) {
      ans += v;
      start[x] = 1;
      done[y] = 1;
    }
  }
  cout << (ans) << '\n';
  return 0;
}
