import java.util.*;
public class Main {
public static void main
(String[] args
) { Scanner sc
= new Scanner
(System.
in);
if (!sc.hasNextInt()) return;
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int result = maxLength(arr);
}
public static int maxLength(int arr[]) {
Map
<Integer, Integer
> map
= new HashMap
<>(); int n = arr.length;
int sum = 0;
int[] prefixSum = new int[n];
for (int i = 0; i < n; i++) {
sum += arr[i];
prefixSum[i] = sum;
}
int maxLongestSubArray = 0;
for (int i = 0; i < n; i++) {
int num = prefixSum[i];
if (num == 0) {
maxLongestSubArray
= Math.
max(maxLongestSubArray, i
+ 1); }
if (map.containsKey(num)) {
int currentLongestSubArray = i - map.get(num);
maxLongestSubArray
= Math.
max(currentLongestSubArray, maxLongestSubArray
); } else {
map.put(num, i);
}
}
return maxLongestSubArray;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwoKcHVibGljIGNsYXNzIE1haW4gewogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFNjYW5uZXIgc2MgPSBuZXcgU2Nhbm5lcihTeXN0ZW0uaW4pOwogICAgICAgIAogICAgICAgIAogICAgICAgIGlmICghc2MuaGFzTmV4dEludCgpKSByZXR1cm47CiAgICAgICAgaW50IG4gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgaW50W10gYXJyID0gbmV3IGludFtuXTsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBhcnJbaV0gPSBzYy5uZXh0SW50KCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgIGludCByZXN1bHQgPSBtYXhMZW5ndGgoYXJyKTsKICAgICAgICAKICAgICAgICAKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocmVzdWx0KTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCBtYXhMZW5ndGgoaW50IGFycltdKSB7CiAgICAgICAgTWFwPEludGVnZXIsIEludGVnZXI+IG1hcCA9IG5ldyBIYXNoTWFwPD4oKTsKICAgICAgICBpbnQgbiA9IGFyci5sZW5ndGg7CiAgICAgICAgaW50IHN1bSA9IDA7CiAgICAgICAgaW50W10gcHJlZml4U3VtID0gbmV3IGludFtuXTsKICAgICAgICAKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBzdW0gKz0gYXJyW2ldOwogICAgICAgICAgICBwcmVmaXhTdW1baV0gPSBzdW07IAogICAgICAgIH0KICAgICAgICAKICAgICAgICBpbnQgbWF4TG9uZ2VzdFN1YkFycmF5ID0gMDsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICBpbnQgbnVtID0gcHJlZml4U3VtW2ldOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKG51bSA9PSAwKSB7CiAgICAgICAgICAgICAgICBtYXhMb25nZXN0U3ViQXJyYXkgPSBNYXRoLm1heChtYXhMb25nZXN0U3ViQXJyYXksIGkgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKG1hcC5jb250YWluc0tleShudW0pKSB7CiAgICAgICAgICAgICAgICBpbnQgY3VycmVudExvbmdlc3RTdWJBcnJheSA9IGkgLSBtYXAuZ2V0KG51bSk7CiAgICAgICAgICAgICAgICBtYXhMb25nZXN0U3ViQXJyYXkgPSBNYXRoLm1heChjdXJyZW50TG9uZ2VzdFN1YkFycmF5LCBtYXhMb25nZXN0U3ViQXJyYXkpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgbWFwLnB1dChudW0sIGkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiBtYXhMb25nZXN0U3ViQXJyYXk7CiAgICB9Cn0K