#include <bits/stdc++.h>
using namespace std;
const long long N = 1e6 + 9;
long long n , l , r , mx;
long long pr[N] ;
void sub1() {
mx = 0;
for (long long i = 1 ; i <= n ; i ++)
for (long long j = 1 ; j < i ; j ++) if (pr[i] - pr[j - 1] == 0)
mx = max(mx , i - j + 1);
cout << mx;
}
unordered_map <long long,long long> mp;
void sub2() {
mx = 0;
for (long long i = 1 ; i <= n ; i ++)
mx = max(mx , i - mp[pr[i]]);
cout << mx;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
#ifndef ONLINE_JUDGE
freopen("ZERO.inp" , "r" , stdin);
freopen("ZERO.out" , "w" , stdout);
#endif
cin >> n ;
pr[0] = 0;
for (long long i = 1 ; i <= n ; i++ ) {
long long x;
cin >> x;
pr[i] = pr[i-1] + x;
if (mp[pr[i]] == 0) mp[pr[i]] = i;
}
if (n <= 3000)
{
sub1();
return 0;
}
sub2();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBsb25nIGxvbmcgTiA9IDFlNiArIDk7CmxvbmcgbG9uZyBuICwgbCAsIHIgLCBteDsKbG9uZyBsb25nIHByW05dIDsKCnZvaWQgc3ViMSgpIHsKCglteCA9IDA7CgoJZm9yIChsb25nIGxvbmcgaSA9IDEgOyBpIDw9IG4gOyBpICsrKQoJCWZvciAobG9uZyBsb25nIGogPSAxIDsgaiA8IGkgOyBqICsrKSBpZiAocHJbaV0gLSBwcltqIC0gMV0gPT0gMCkKCQkJbXggPSBtYXgobXggLCBpIC0gaiArIDEpOwoKCWNvdXQgPDwgbXg7Cn0KCnVub3JkZXJlZF9tYXAgPGxvbmcgbG9uZyxsb25nICBsb25nPiBtcDsKCnZvaWQgc3ViMigpIHsKCW14ID0gMDsKCglmb3IgKGxvbmcgbG9uZyBpID0gMSA7IGkgPD0gbiA7IGkgKyspCgkJbXggPSBtYXgobXggLCBpIC0gbXBbcHJbaV1dKTsKCQoJY291dCA8PCBteDsKfQoKaW50IG1haW4oKSB7CgljaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oMCk7CgoJI2lmbmRlZiBPTkxJTkVfSlVER0UKCWZyZW9wZW4oIlpFUk8uaW5wIiAsICJyIiAsIHN0ZGluKTsKCWZyZW9wZW4oIlpFUk8ub3V0IiAsICJ3IiAsIHN0ZG91dCk7CgkjZW5kaWYKCWNpbiA+PiBuIDsKCglwclswXSA9IDA7Cglmb3IgKGxvbmcgbG9uZyBpID0gMSA7IGkgPD0gbiA7IGkrKyApIHsKCQlsb25nIGxvbmcgeDsKCQljaW4gPj4geDsKCQlwcltpXSA9IHByW2ktMV0gKyB4OwoJCWlmIChtcFtwcltpXV0gPT0gMCkgbXBbcHJbaV1dID0gaTsKCX0KCglpZiAobiA8PSAzMDAwKQoJewoJCXN1YjEoKTsKCQlyZXR1cm4gMDsKCX0KCglzdWIyKCk7Cn0=