#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#define ll long long
using namespace std;
const int maxn=100005;
ll f[maxn],d[maxn],g[maxn],s[maxn],n,i,t,j,k,l,x,num,a[maxn],ans,num1;
ll sqr(ll x){
returnx*x;
}
int main(){
// freopen("data.in","r",stdin);
scanf("%d",&n);
for (i=1;i<=n;i++)
scanf("%lld",&a[i]),s[i]=s[i-1]+a[i];
memset(f,127,sizeof(f));ans=f[1];
for (i=1;i<=n;i++){
while (a[d[num]]>a[i]){
if (num>1) f[d[num]]=min(f[d[num]],sqr(s[d[num-1]]-s[d[num]])+sqr(a[d[num]]-a[d[num-1]]));
f[i]=min(f[i],sqr(a[i]-a[d[num]])+sqr(s[i]-s[d[num]]));
num--;
}
d[++num]=i;
while (a[g[num1]]<a[i] && num1>0){
if (num1>1) f[g[num1]]=min(f[g[num1]],sqr(s[g[num1-1]]-s[g[num1]])+sqr(a[g[num1]]-a[g[num1-1]]));
f[i]=min(f[i],sqr(a[i]-a[g[num1]])+sqr(s[i]-s[g[num1]]));
num1--;
}
g[++num1]=i;
}
for (i=2;i<=num;i++)
f[d[i]]=min(f[d[i]],sqr(a[d[i]]-a[d[i-1]])+sqr(s[d[i]]-s[d[i-1]]));
for (i=2;i<=num1;i++)
f[g[i]]=min(f[g[i]],sqr(a[g[i]]-a[g[i-1]])+sqr(s[g[i]]-s[g[i-1]]));
for (i=1;i<=n;i++)
ans=min(ans,f[i]);
printf("%lld\n",ans);
}