import numpy as np
#input
N = int(input())
A = np.array(list(map(int, input().split())))

#output
idx = np.argsort(-A)

dp = np.zeros((N+1, N+1), int)
#dp[i, j]を左i, 右jまで場所が決まった状態の最大値とする。
#i+j = Nとなる場合の最大値が答えとなる。

answer = 0
for i in range(N):
    dp[i+1, 0] = dp[i, 0] + A[idx[i]]*(abs(idx[i]-i))
    for j in range(N):
        dp[0, j+1] = dp[0, j] + A[idx[j]]*(abs(N-1-idx[j]-j))
        if i+j+1 < N:
            dp[i+1, j+1] = max(dp[i, j+1]+A[idx[i+j+1]]*(abs(idx[i+j+1]-i)), dp[i+1, j] + A[idx[i+j+1]]*(abs(N-1-idx[i+j+1]-j)))
    answer = max(answer, dp[i, N-i])

print(answer)