#include <bits/stdc++.h>
using namespace std;
#define int __int128
#define ll long long
vector<pair<int,int>> cht;
pair<int,int> ins(pair<int,int> p, pair<int,int> p1)
{
int m=p.first, c=p.second, m1=p1.first, c1=p1.second;
pair<int,int> ans={c1-c,m-m1};
return ans;
}
bool comp(pair<int,int> p, pair<int,int> p1)
{
return p.first*p1.second<=p1.first*p.second;
}
void add(int m,int c)
{
cht.push_back({m,c});
while (cht.size()>2)
{
int x=cht.size();
pair<int,int> p=cht[x-3], p1=cht[x-2], p2=cht[x-1];
if (comp(ins(p1,p2),ins(p,p1))) swap(cht[x-2],cht[x-1]), cht.pop_back();
else break;
}
}
int get(int x)
{
int s=0, e=cht.size();
while (s+1<e)
{
int mid=(s+e)/2;
int o=cht[mid-1].first*x+cht[mid-1].second,
p=cht[mid].first*x+cht[mid].second;
if (p<o) s=mid;
else e=mid;
}
return cht[s].first*x+cht[s].second;
}
signed main()
{
ll n;
cin>>n;
ll a[n+1];
for (int i=1;i<=n;i++)
cin>>a[i];
int pre[n+1]={};
add(n, 0);
int mx=0, id=0;
for (int i=1;i<=n;i++)
{
if (a[i]>mx)
mx=a[i], id=i;
ll val=get(mx);
if (i==n)
cout<<val<<endl;
add(n-i,val);
}
return 0;
}