
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
const ll INF=mod*mod;
#define rep(i, n) for (ll i = 0; i < (ll)(n); i++)
#define all(x) (x).begin(),(x).end()
ll min(ll a,ll b){
  if(a>b){
    return b;
    }
      else{
        return a;
      }
  }
  
  ll max(ll a,ll b){
    if(a>b){
      return a;
    }
    else{
      return b;
    }
  }

ll power(ll a,ll b){
 ll ans=1;
 for(ll i=1;i<=b;i++){
ans*=a;
  }
  return ans;
}

 ll gcd(ll m,ll n){
 	if(n==0){
       return m;
     }
   return gcd(n,m%n);
 }
ll lcm(ll a,ll b){
  return a/gcd(a,b)*b;
		

}
const  ll limit=2000;
ll G[limit][limit];
priority_queue<ll>que;
ll N;

void dfs(ll now,ll sum,bool flag,bool visited[limit]){
  bool end=true;
  if(flag){
    rep(i,N){
      if(visited[i]==false){
        visited[i]=true;
        dfs(i,sum+G[now][i],false,visited);
        visited[i]=false;
        end=false;
      }
    }
  }
  
  else{
rep(i,N){
  if(visited[i]==false){
    visited[i]=true;
        dfs(i,sum+G[now][i],true,visited);
        visited[i]=false;
        end=false;
  }
}
  }

    
    if(end){
      que.push(sum);
      return;
    }
  }

int main(){
  
  ll N;
  cin>>N;
  vector<ll>A(N);
 
  rep(i,N){
    cin>>A[i];
  }
  
  rep(i,N){
for(ll j=i+1;j<N;j++){
  G[i][j]=abs(A[i]+A[j])*(j-i);
  G[j][i]=abs(A[i]+A[j])*(j-i);
}
  }
bool visited[N]={false};
  visited[0]=true;
  dfs(0,0,true,visited);
  
  
  cout<<que.top()<<endl;
 
}
