//#pragma GCC optimize(2)
#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
const int N=4e5+500;
long long f[N];
int n,a[N];
char *p1,*p2,buf[100000];
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
int read(){
int x=0,f=1;
char ch=nc();
while(ch<48||ch>57){
if(ch=='-')
f=-1;
ch=nc();}
while(ch>=48&&ch<=57)
x=x*10+ch-48,ch=nc();
return x*f;}
template<typename type>
inline void write(type x,bool mode=1)
{
x<0?x=-x,putchar('-'):0;static short Stack[50],top(0);
do Stack[++top]=x%10,x/=10; while(x);
while(top) putchar(Stack[top--]|48);
mode?putchar('\n'):putchar(' ');
}
inline void CIN(){n=read();
for(int i=1;i<=n;++i) a[i]=read();
for(int i=1;i<=n;i++) f[i]=1e18;
}
int xx[N],q[N],cnt,sd[N];
inline void solve(){
f[1]=0;
q[++cnt]=1;
for(int i=2;i<=n;i++){
while(cnt>0 and a[q[cnt]]>a[i]) cnt--;
sd[i]=q[cnt];
q[++cnt]=i;
}
int SQ=sqrt(n)+1;
xx[a[1]]=1;
for(int i=2;i<=n;i++){
for(int o=i-1;o>=1;o--){
if(i-o>SQ) break;
f[i]=min(f[o]+(long long)(min(a[i],a[o])*(long long)(i-o)*(i-o)),f[i]);
}
for(int o=1;o<=SQ;o++){
if(xx[o]){f[i]=min(f[i],f[xx[o]]+(long long)((long long)(i-xx[o])*(i-xx[o])*o));}}
xx[a[i]]=i;
for(int o=sd[i];o>=1;o--){
if(sd[i]-o>SQ) break;
f[i]=min(f[i],(long long)(f[o]+(long long)(i-o)*(i-o)*(a[o])));
}
/*for(int o=i-1;o>=1;o--){
f[i]=min(f[i],f[o]+(long long)((long long)(i-o)*(i-o)*min(a[i],a[o])));
if(a[o]<=a[i]){break;}
}*/
}
for(int i=1;i<=n;i++){
write(f[i],0);
}
/* for(int i=1;i<=n;i++){
cout<<sd[i]<<' ';
}*/
}
main(){
cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);
CIN();solve();
return 0;
}