//{ Driver Code Starts
#include <bits/stdc++.h>
using namespace std;
// } Driver Code Ends
/*You are required to complete this function*/
class Solution {
public:
int maxLen(vector<int>& arr) {
// code here
int n=arr.size();
int sum=0;
int longest=0;
map<int,int>mp;
mp[0]=-1;
for(int i=0;i<n;i++){
sum+=arr[i];
if(mp.find(sum)!=mp.end()){
longest=max(longest,i-mp[sum]);
}else{
mp[sum]=i;
}
}
return longest;
}
};
//{ Driver Code Starts.
int main() {
int t;
cin >> t;
cin.ignore(); // to ignore the newline after the integer input
while (t--) {
int n;
vector<int> a;
string input;
// Input format: first number n followed by the array elements
getline(cin, input);
stringstream ss(input);
int num;
while (ss >> num)
a.push_back(num);
Solution obj;
cout << obj.maxLen(a) << endl;
cout << "~\n";
}
return 0;
}
// } Driver Code Ends
Ly97IERyaXZlciBDb2RlIFN0YXJ0cwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgovLyB9IERyaXZlciBDb2RlIEVuZHMKCi8qWW91IGFyZSByZXF1aXJlZCB0byBjb21wbGV0ZSB0aGlzIGZ1bmN0aW9uKi8KCmNsYXNzIFNvbHV0aW9uIHsKICBwdWJsaWM6CiAgICBpbnQgbWF4TGVuKHZlY3RvcjxpbnQ+JiBhcnIpIHsKICAgICAgICAvLyBjb2RlIGhlcmUKICAgICAgICBpbnQgbj1hcnIuc2l6ZSgpOwogICAgICAgIGludCBzdW09MDsKICAgICAgICBpbnQgbG9uZ2VzdD0wOwogICAgICAgIG1hcDxpbnQsaW50Pm1wOwogICAgICAgIG1wWzBdPS0xOwogICAgICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgICAgICBzdW0rPWFycltpXTsKICAgICAgICAgICAgaWYobXAuZmluZChzdW0pIT1tcC5lbmQoKSl7CiAgICAgICAgICAgICAgICBsb25nZXN0PW1heChsb25nZXN0LGktbXBbc3VtXSk7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgbXBbc3VtXT1pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBsb25nZXN0OwogICAgfQp9OwoKCgovL3sgRHJpdmVyIENvZGUgU3RhcnRzLgoKaW50IG1haW4oKSB7CiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgY2luLmlnbm9yZSgpOyAvLyB0byBpZ25vcmUgdGhlIG5ld2xpbmUgYWZ0ZXIgdGhlIGludGVnZXIgaW5wdXQKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBpbnQgbjsKICAgICAgICB2ZWN0b3I8aW50PiBhOwogICAgICAgIHN0cmluZyBpbnB1dDsKCiAgICAgICAgLy8gSW5wdXQgZm9ybWF0OiBmaXJzdCBudW1iZXIgbiBmb2xsb3dlZCBieSB0aGUgYXJyYXkgZWxlbWVudHMKICAgICAgICBnZXRsaW5lKGNpbiwgaW5wdXQpOwogICAgICAgIHN0cmluZ3N0cmVhbSBzcyhpbnB1dCk7CiAgICAgICAgaW50IG51bTsKICAgICAgICB3aGlsZSAoc3MgPj4gbnVtKQogICAgICAgICAgICBhLnB1c2hfYmFjayhudW0pOwoKICAgICAgICBTb2x1dGlvbiBvYmo7CiAgICAgICAgY291dCA8PCBvYmoubWF4TGVuKGEpIDw8IGVuZGw7CiAgICAgICAgY291dCA8PCAiflxuIjsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKLy8gfSBEcml2ZXIgQ29kZSBFbmRz