import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		long a[]=new long[n];
//		这题其实就是曼哈顿距离转切比雪夫
//		就是分两种情况讨论,求这两种情况中最大值
//		第一种,假如两边都是正的
//		第二种情况,左边正右边负
		long b[]=new long[n];
		long c[]=new long[n];
		for (int i = 0; i < a.length; i++) {
			a[i]=scanner.nextInt();
			b[i]=a[i]*a[i]+(long)(i+1)*(i+1);
			c[i]=a[i]*a[i]-(long)(i+1)*(i+1);
		}
		Arrays.sort(b);
		Arrays.sort(c);
		long max=Math.max(b[n-1]-b[0], c[n-1]-c[0]);

		
		
//		long max=-1;
//		for (int i = 0; i < a.length; i++) {
//			for (int j = i+1; j < a.length; j++) {
//				long dist=(j+1)*(j+1)-(i+1)*(i+1)+Math.abs(a[i]*a[i]-a[j]*a[j]);
//				if(dist>max)max=dist;
//			}
//		}
		System.out.println(max);

	}

}

这题我主要是被数据范围给恶心到了,我没想到原来一个int与int相乘如果超过范围会自动变成负数,哪怕前面用来装这个结果的数据类型是long。还有就是(i+1)*(i+1)那个地方也是同样的问题,要强转