#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
using namespace std;
// Hàm giải quyết từng bộ test
void solve() {
int n;
if (!(cin >> n)) return;
// Đọc mảng a (0-based indexing)
vector<long long> a(n);
long long total_sum = 0;
for (int i = 0; i < n; ++i) {
cin >> a[i];
total_sum += a[i];
}
// 1. Tính mảng tổng tiền tố (Prefix Sum) P
// P[i] là tổng của i phần tử đầu tiên (a[0] đến a[i-1])
// P[0] = 0
vector<long long> P(n + 1, 0);
for (int i = 0; i < n; ++i) {
P[i + 1] = P[i] + a[i];
}
long long max_profit = 0;
// 2. max_L_value sẽ lưu max_{1 <= l <= r} (P[l-1] - l^2 + l)
// l ở đây là chỉ số 1-based (từ 1 đến n)
// Khởi tạo max_L_value cho l=1: P[0] - 1^2 + 1 = 0 - 1 + 1 = 0
// Ta sử dụng giá trị MIN_LONG_LONG để đảm bảo giá trị đầu tiên được gán đúng
long long max_L_value = -2e18; // Khởi tạo với giá trị rất nhỏ
// 3. Duyệt r từ 1 đến n (r là chỉ số 1-based)
for (int r = 1; r <= n; ++r) {
// A. Cập nhật max_L_value (xét thêm l=r)
// L_r = P[r-1] - r^2 + r
long long r_long = (long long)r;
long long current_L_r = P[r - 1] - r_long * r_long + r_long; // Đã sửa lỗi dấu: + r_long
max_L_value = max(max_L_value, current_L_r);
// B. Tính lợi nhuận tối đa cho r cố định
// Profit_r = (r^2 + r - P[r]) + max_L_value
long long term_R = r_long * r_long + r_long - P[r];
long long current_max_profit = term_R + max_L_value;
// C. Cập nhật lợi nhuận tối đa chung
max_profit = max(max_profit, current_max_profit);
}
// 4. Kết quả là tổng ban đầu + lợi nhuận tối đa (có thể là 0 nếu không thay thế)
cout << total_sum + max_profit << endl;
}
int main() {
// Tăng tốc độ I/O
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
if (!(cin >> t)) return 0;
while (t--) {
solve();
}
return 0;
}