/* Murad Eynizade */
#include <bits/stdc++.h>
#define intt long long
#define FAST_READ ios_base::sync_with_stdio(0);cin.tie(0);
#define F first
#define S second
using namespace std;
const int maxx = 100005;
struct line{
intt k , b;
};
intt ew(line a,intt x) {
return x * a.k + a.b;
}
line t[maxx * 4];
int n , arr[maxx];
intt dp[maxx] , res;
void add(int v,int l,int r,line nw) {
int m = (l + r) >> 1;
bool le = ew(nw , l) > ew(t[v] , l);
bool mid = ew(nw , m) > ew(t[v] , m);
if (mid)swap(nw , t[v]);
if (r - l == 1)return;
if (le != mid)add(v << 1,l,m,nw);
else add(v << 1 | 1,m,r,nw);
}
intt get(int v,int l,int r,int x) {
if (r - l == 1)return ew(t[v] , x);
int m = (l + r) >> 1;
if (x < m)return max( ew(t[v] , x) , get(v << 1 , l , m , x));
else return max( ew(t[v] , x) , get(v << 1 | 1 , m , r , x));
}
int main()
{
FAST_READ;
freopen("avioane.in","r",stdin);
freopen("avioane.out","w",stdout);
cin>>n;
for (int i = 0;i<n;i++)cin>>arr[i];
sort(arr , arr + n);
for (int i = 0;i<n;i++) {
add(1 , 1 , maxx , {arr[i] , -1LL * (i - 1) * arr[i]});
if (i == 0) {
dp[i] = arr[i] + 1LL * (n - 1) * arr[i + 1];
//cout<<i<<" "<<dp[i]<<endl;
continue;
}
dp[i] = get(1 , 1 , maxx , i) + (n - i - 1) * arr[i + 1];
//cout<<i<<" "<<dp[i]<<endl;
}
for (int i = 0;i<n;i++)res = max(res , dp[i]);
cout<<res<<endl;
return 0;
}