from math import inf import sys def main(): # 读取输入 n = int(sys.stdin.readline()) arr = list(map(int, sys.stdin.readline().split())) # 处理特殊情况:n=1时没有合法的(i,j)对 if n == 1: print(0) return # 分析问题: # 我们需要计算所有i<j时的表达式:j^2 - i^2 + |arr[i-1]^2 - arr[j-1]^2| # 这个表达式可以分为两种情况: # 情况1:当arr[j-1]^2 >= arr[i-1]^2时: # j^2 - i^2 + arr[j-1]^2 - arr[i-1]^2 = (j^2 + arr[j-1]^2) - (i^2 + arr[i-1]^2) # 情况2:当arr[j-1]^2 < arr[i-1]^2时: # j^2 - i^2 + arr[i-1]^2 - arr[j-1]^2 = (j^2 - arr[j-1]^2) - (i^2 - arr[i-1]^2) # 因此,我们需要分别计算这两种情况的最大值 # 初始化变量: # max_diff_A记录情况1的最大值 # min_A记录情况1的最小前缀值 # max_diff_B记录情况2的最大值 # min_B记录情况2的最小前缀值 max_diff_A = -inf min_A = 1**2 + arr[0]**2 # i=1时的A值 max_diff_B = -inf min_B = 1**2 - arr[0]**2 # i=1时的B值 # 从i=2开始遍历(因为j>i,所以i最小是1,j最小是2) for j in range(2, n + 1): # 计算当前j的A值和B值 curr_A = j**2 + arr[j-1]**2 curr_B = j**2 - arr[j-1]**2 # 更新情况1的最大差值 max_diff_A = max(max_diff_A, curr_A - min_A) # 更新情况1的最小前缀值 min_A = min(min_A, curr_A) # 更新情况2的最大差值 max_diff_B = max(max_diff_B, curr_B - min_B) # 更新情况2的最小前缀值 min_B = min(min_B, curr_B) # 最终结果是两种情况的最大值 print(max(max_diff_A, max_diff_B)) if __name__ == "__main__": main()