import numpy as np

N = int(input())
A = list(map(int, input().split()))

A = np.array(A)
I = np.argsort(A)[::-1] + 1

p = np.zeros(shape=(N + 1, N + 1), dtype=np.int)
for i in range(1, N + 1):
  # i      : Aが大きい順
  # x      : A*(i-p); p=1,2,...
  # y      : A*(p-i); p=N,N-1,...
  # p[x][y]: 左からx人、右からy人並べた時の嬉しさ合計の最大値
  # >> p[1][0]: 最大Aを左から1番目に並べた時の嬉しさ
  # >> p[0][1]: 最大Aを左からN番目に並べた時の嬉しさ
  # >> p[1][1]: max(p[0][1] + 2番目Aを左から1番目に並べた時の嬉しさ,
  #                 p[1][0] + 2番目Aを左からN番目に並べた時の嬉しさ)
  j = i - 1
  J = I[j] - 1
  p[i][0] = p[j][0] + A[J]*abs((I[j] - i))
  p[0][i] = p[0][j] + A[J]*abs(((N - j) - I[j]))

  for x in range(1, i):
    y = i - x

    p[x][y] = max(
      p[x - 1][y] + A[J]*abs((I[j] - x)),
      p[x][y - 1] + A[J]*abs(((N - (y - 1)) - I[j])))

print(p.max())
