#include <bits/stdc++.h>
using namespace std;
void maxsubarray(vector<int>&nums){
int max_ending_here=0;
int max_so_far=0;
int start=0,end=0;
for(int i=0;i< nums.size();i++){
max_ending_here=max_ending_here+nums[i];
if(max_ending_here<0)
{
start=i+1; //Every time it goes negative start from next index
max_ending_here=0;
}
else
end =i; //As long as its positive keep updating the end
if(max_so_far<max_ending_here){
max_so_far=max_ending_here;
}
}
cout<<max_so_far<<" "<<start<<" "<<end<<endl;
}
int main() {
int T;
cin>>T;
vector<int>nums;
while(T--){
int n;cin>>n;
for(int i=0;i<n;i++){
int u;
cin>>u;
nums.push_back(u);
}
maxsubarray(nums);
}
// your code goes here
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIG1heHN1YmFycmF5KHZlY3RvcjxpbnQ+Jm51bXMpewoJaW50IG1heF9lbmRpbmdfaGVyZT0wOwogICAgaW50IG1heF9zb19mYXI9MDsKCWludCBzdGFydD0wLGVuZD0wOwogICAgZm9yKGludCBpPTA7aTwgbnVtcy5zaXplKCk7aSsrKXsKICAgICAgICBtYXhfZW5kaW5nX2hlcmU9bWF4X2VuZGluZ19oZXJlK251bXNbaV07CiAgICAgICAgaWYobWF4X2VuZGluZ19oZXJlPDApCiAgICAgICAgewogICAgICAgICAgICBzdGFydD1pKzE7IC8vRXZlcnkgdGltZSBpdCBnb2VzIG5lZ2F0aXZlIHN0YXJ0IGZyb20gbmV4dCBpbmRleAogICAgICAgICAgICBtYXhfZW5kaW5nX2hlcmU9MDsKICAgICAgICB9CiAgICAgICAgZWxzZSAKICAgICAgICAgICAgZW5kID1pOyAvL0FzIGxvbmcgYXMgaXRzIHBvc2l0aXZlIGtlZXAgdXBkYXRpbmcgdGhlIGVuZAoKICAgICAgICBpZihtYXhfc29fZmFyPG1heF9lbmRpbmdfaGVyZSl7CiAgICAgICAgICAgIG1heF9zb19mYXI9bWF4X2VuZGluZ19oZXJlOwogICAgICAgIH0KICAgICAgICAKICAgIH0KICAgIGNvdXQ8PG1heF9zb19mYXI8PCIgIjw8c3RhcnQ8PCIgIjw8ZW5kPDxlbmRsOwp9CgppbnQgbWFpbigpIHsKCWludCBUOwoJY2luPj5UOwoJdmVjdG9yPGludD5udW1zOwoJd2hpbGUoVC0tKXsKCQkgaW50IG47Y2luPj5uOyAKICAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKyl7CiAgICAgICAgIAkgIGludCB1OwogICAgICAgICAJICBjaW4+PnU7CiAgICAgICAgIAkgIG51bXMucHVzaF9iYWNrKHUpOwogICAgICAgICB9CiAgICAgICAgIG1heHN1YmFycmF5KG51bXMpOwoJfQoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcmV0dXJuIDA7Cn0=