#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e9 + 7;
const long long mod = 1e9 + 7;
const int64_t CYCLES_PER_SEC = 2800000000;
inline uint32_t Xor128() {
  static uint32_t x = 123456789;
  static uint32_t y = 362436069;
  static uint32_t z = 521288629;
  static uint32_t w = 88675123;
  uint32_t t = x ^ (x << 11);
  x = y;
  y = z;
  z = w;
  return w = (w ^ (w >> 19)) ^ (t ^ (t >> 8));
}
struct Timer {
  int64_t start;
  Timer() { reset(); }
  void reset() { start = getcycle(); }
  void plus(double a) { start -= (a * CYCLES_PER_SEC); }
  inline double get() { return (double)(getcycle() - start) / CYCLES_PER_SEC; }
  inline int64_t getcycle() {
    uint32_t low, high;
    __asm__ volatile("rdtsc" : "=a"(low), "=d"(high));
    return ((int64_t)low) | ((int64_t)high << 32);
  }
};
int main() {
  int n;
  int a[2000];
  cin >> n;
  vector<pair<int, int> > b;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    b.push_back(make_pair(a[i], i));
  }
  long long now = 0;
  Timer nii;
  while (nii.get() < 1.9) {
    int c = Xor128() % n;
    int d = Xor128() % n;
    if (c == d) {
      continue;
    }
    long long next = now;
    next -= b[c].first * abs(b[c].second - c);
    next -= b[d].first * abs(b[d].second - d);
    next += b[c].first * abs(b[c].second - d);
    next += b[d].first * abs(b[d].second - c);
    if (now <= next) {
      now = next;
      swap(b[c], b[d]);
    }
  }
  cout << now << endl;
  return 0;
}
