#include<bits/stdc++.h>
#define rep(i, n) for(int i=0; i<n; i++)
using namespace std;
using ll = long long;
using P = pair<int, int>;

int main(){
    int N;
    cin >> N;
    int A[N];
    rep(i, N) cin >> A[i];

    ll po[N];
    int st=0;
    int en=N-1;
    int S[N]={0};
    rep(i, N){
        //得点増加の最大値計算
        int po_max=0;
        int num=0;
        int flag=-1;
        rep(j, N){
            if(A[j]*(abs(j-st)) >= po_max){
                if(A[j]*(abs(j-st)) == po_max){
                    if(A[num]<A[j]){
                        po_max=A[j]*abs(j-st);
                        num=j;
                        flag=0;
                    }
                }else{
                    po_max=A[j]*abs(j-st);
                    num=j;
                    flag=0;
                }
            }
            if(A[j]*(abs(j-en)) >= po_max){
                if(A[j]*(abs(j-en)) == po_max){
                    if(A[num]<A[j]){
                        po_max=A[j]*abs(j-en);
                        num=j;
                        flag=1;
                    }
                }else{
                    po_max=A[j]*abs(j-en);
                    num=j;
                    flag=1;
                }
            }
        }

        //得点を増加させる
        A[num]=-1;
        if(flag==0){
            S[st]=po_max;
            // cout<<num<<"->"<<st<<endl;
            // cout<<"S["<<st<<"]="<<S[st]<<endl;
            rep(j, N){
                st++;
                if(S[st]==0) break;
            }
        }else if(flag==1){
            S[en]=po_max;
            // cout<<num<<"->"<<en<<endl;
            // cout<<"S["<<en<<"]="<<S[en]<<endl;
            rep(j, N){
                en--;
                if(S[en]==0) break;
            }
        }
    }

    ll ans=0;
    rep(i, N) ans+=S[i];
    cout << ans << endl;
    return 0;
}