#include<bits/stdc++.h>
using namespace std;
#define MAX 100010
#define INF 10000000000000000




typedef long long int ll;

ll sum[100010];



struct point
{
    ll x,y;
} jibon[MAX+5],maneNai[MAX+5];



bool cmp(struct point p, struct point q)
{
    if(p.y<q.y) return true;
    else return false;
}

ll bruteForce(point p, point q)
{
    return ((p.x-q.x)*(p.x-q.x)+(p.y-q.y)*(p.y-q.y));
}

point strip[MAX+10];
int flag[MAX+5];

ll closestPair(point px[], int st, int en)
{
    if((en-st+1)>=3)
   {
     int mid = (st+en)/2;
     ll d = min(closestPair(px,st,mid),closestPair(px,mid+1,en));
     int j=0;
     for(int i=mid;i>=st;i--)
     {
         if((px[mid].x-px[i].x)<d)
         {
            j++;
            strip[j]=px[i];
         }
         else break;
     }
     for(int i=mid+1;i<=en;i++)
     {
         if((px[i].x-px[mid].x)<d)
         {
             j++;
             strip[j]=px[i];
         }
     }
     sort(strip+1,strip+1+j,cmp);
     for(int i=1;i<=j;i++)
     {

         
         for(int k=i+1;k<=j;k++)
         {
            if((strip[k].y-strip[i].y)<d)
            {
                d = min(d,bruteForce(strip[i],strip[k]));
            }
            else break;
         }

     }
     return d;
   }
   else
   {
      ll d = INF;
      for(int i=st;i<=en;i++)
      {
          for(int k=i+1;k<=en;k++)
          {
            d = min(d,bruteForce(px[i],px[k]));
          }
      }
      return d;
   }
}


int main()
{
    ll n;

    cin>>n;
    sum[0] = 0;
    for(int i=1;i<=n;i++)
    {
        ll v;
        cin>>v;
        sum[i] = sum[i-1]+v;
        jibon[i].x = i;
        jibon[i].y = sum[i];
    }
    ll v = 0;
    v = closestPair(jibon,1,n);
    cout<<v<<endl;

    return 0;

}
