#include <iostream>
using namespace std;
int kadaneAlgo(int a[], int n) {
// for Non linear
int cs=0,ms=0;
for(int i=0; i<n; i++) {
if(cs < 0) {
cs=0;
}
cs = cs + a[i];
if(cs > ms) {
ms = cs;
}
}
return ms;
}
int circularSum(int a[], int n) {
// for Circular fashion
int max_kadane = kadaneAlgo(a,n);
int max_sum = 0;
for(int i=0; i<n; i++) {
max_sum += a[i];
a[i] = -a[i];
}
// compute the maxSum means the minimum sum of the elements
max_sum = max_sum + kadaneAlgo(a,n);
return (max_sum > max_kadane) ? max_sum : max_kadane;
}
int main(int argc, char const *argv[])
{
int t,c=0,n;
cin >> t;
int arr[10000];
while(c<t){
cin >> n;
for(int i=0; i<n; i++) {
cin >> arr[i];
}
cout << circularSum(arr,n);
c++;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGthZGFuZUFsZ28oaW50IGFbXSwgaW50IG4pIHsKCS8vIGZvciBOb24gbGluZWFyCglpbnQgY3M9MCxtcz0wOwoJZm9yKGludCBpPTA7IGk8bjsgaSsrKSB7CgkJaWYoY3MgPCAwKSB7CgkJCWNzPTA7CgkJfQoJCWNzID0gY3MgKyBhW2ldOwoJCWlmKGNzID4gbXMpIHsKCQkJbXMgPSBjczsKCQl9Cgl9CglyZXR1cm4gbXM7Cn0KCmludCBjaXJjdWxhclN1bShpbnQgYVtdLCBpbnQgbikgewoJLy8gZm9yIENpcmN1bGFyIGZhc2hpb24gCglpbnQgbWF4X2thZGFuZSA9IGthZGFuZUFsZ28oYSxuKTsKCWludCBtYXhfc3VtID0gMDsKCWZvcihpbnQgaT0wOyBpPG47IGkrKykgewoJCW1heF9zdW0gKz0gYVtpXTsKCQlhW2ldID0gLWFbaV07Cgl9CgoJLy8gY29tcHV0ZSB0aGUgbWF4U3VtIG1lYW5zIHRoZSBtaW5pbXVtIHN1bSBvZiB0aGUgZWxlbWVudHMgCgkgbWF4X3N1bSA9ICBtYXhfc3VtICsga2FkYW5lQWxnbyhhLG4pOwoKCSByZXR1cm4gKG1heF9zdW0gPiBtYXhfa2FkYW5lKSA/IG1heF9zdW0gOiBtYXhfa2FkYW5lOwp9CgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgY29uc3QgKmFyZ3ZbXSkKewoJaW50IHQsYz0wLG47CgljaW4gPj4gdDsKCWludCBhcnJbMTAwMDBdOwoJd2hpbGUoYzx0KXsKCQljaW4gPj4gbjsKCQlmb3IoaW50IGk9MDsgaTxuOyBpKyspIHsKCQkJY2luID4+IGFycltpXTsKCQl9CgkJY291dCA8PCBjaXJjdWxhclN1bShhcnIsbik7CgkJYysrOwoJfQoJcmV0dXJuIDA7Cn0=