/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
Scanner sc
= new Scanner
(System.
in); int size = sc.nextInt();
int[] arr =new int[size];
for(int i = 0;i<size;i++){
arr[i] = sc.nextInt();
}
int result = maxLength(arr);
}
public static int maxLength(int arr[]) {
HashMap
<Integer, Integer
> present
= new HashMap
<>();
int n = arr.length;
int[] prefixSum = new int[n];
int sum = 0;
for (int i = 0; i < n; i++) {
sum += arr[i];
prefixSum[i] = sum;
}
present.put(0, -1);
int maxLongestSubArray = 0;
for (int i = 0; i < n; i++) {
int num = prefixSum[i];
if (num == 0) {
maxLongestSubArray
= Math.
max(maxLongestSubArray, i
+ 1); }
if (present.containsKey(num)) {
int currentLongestSubArray = i - present.get(num);
maxLongestSubArray
= Math.
max(currentLongestSubArray, maxLongestSubArray
); } else {
present.put(num, i);
}
}
return maxLongestSubArray;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwoJCWludCBzaXplID0gc2MubmV4dEludCgpOwogCgkJaW50W10gYXJyID1uZXcgaW50W3NpemVdOwoKCQlmb3IoaW50IGkgPSAwO2k8c2l6ZTtpKyspewoJCQlhcnJbaV0gPSBzYy5uZXh0SW50KCk7CgkJfQoKCQkKIAogICAgICAgICAgICBpbnQgcmVzdWx0ID0gbWF4TGVuZ3RoKGFycik7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihyZXN1bHQpOwogICAgICAgIAoKCX0KCXB1YmxpYyBzdGF0aWMgaW50IG1heExlbmd0aChpbnQgYXJyW10pIHsKICAgICAgICBIYXNoTWFwPEludGVnZXIsIEludGVnZXI+IHByZXNlbnQgPSBuZXcgSGFzaE1hcDw+KCk7CiAgICAgICAgCiAgICAgICAgaW50IG4gPSBhcnIubGVuZ3RoOwogICAgICAgIGludFtdIHByZWZpeFN1bSA9IG5ldyBpbnRbbl07CiAgICAgICAgaW50IHN1bSA9IDA7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgc3VtICs9IGFycltpXTsKICAgICAgICAgICAgcHJlZml4U3VtW2ldID0gc3VtOyAKICAgICAgICB9CiAgICAgICAgcHJlc2VudC5wdXQoMCwgLTEpOwogICAgICAgIGludCBtYXhMb25nZXN0U3ViQXJyYXkgPSAwOwogICAgICAgIAogICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgIGludCBudW0gPSBwcmVmaXhTdW1baV07CiAgICAgICAgICAgIAogICAgICAgICAgIAogICAgICAgICAgICBpZiAobnVtID09IDApIHsKICAgICAgICAgICAgICAgIG1heExvbmdlc3RTdWJBcnJheSA9IE1hdGgubWF4KG1heExvbmdlc3RTdWJBcnJheSwgaSArIDEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHByZXNlbnQuY29udGFpbnNLZXkobnVtKSkgewogICAgICAgICAgICAgICAgaW50IGN1cnJlbnRMb25nZXN0U3ViQXJyYXkgPSBpIC0gcHJlc2VudC5nZXQobnVtKTsKICAgICAgICAgICAgICAgIG1heExvbmdlc3RTdWJBcnJheSA9IE1hdGgubWF4KGN1cnJlbnRMb25nZXN0U3ViQXJyYXksIG1heExvbmdlc3RTdWJBcnJheSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHByZXNlbnQucHV0KG51bSwgaSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIG1heExvbmdlc3RTdWJBcnJheTsKICAgIH0KfQ==