// 一脸懵,完全不会,参考其他人答案
// 主要逻辑思路,转成单数据比较
// 展开绝对值,得到 i*i + a*a, i*i-a*a, 两种数据
// 读取后算出两个数组,排序,取最大最小位置差值,再max即可
#include <iostream>
#include <vector>
#include <cstdint>
#include <algorithm>
using namespace std;

struct Item {
    uint64_t i;
    uint64_t a;
};

int main() {
    uint64_t n;
    cin >> n;
    vector<int64_t> a(n);
    vector<int64_t> b(n);
    for(int64_t i = 1; i <= n; ++i) {
        uint64_t v;
        cin >> v;
        a[i-1] = int64_t(i)*int64_t(i) + v * v;
        b[i-1] = int64_t(i)*int64_t(i) - v * v;
    }
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    cout << max(a[n-1]-a[0], b[n-1]-b[0]) << endl;
}
// 64 位输出请用 printf("%lld")