#include using namespace std; #define MAXN 100005 int N; int A[MAXN]; int B[MAXN]; map S; int getPos(long long diff) { if (S.find(diff) != S.end()) { int pos = S[diff]; return pos; } else { return N; } } void addPos(long long diff, int pos) { if (S.find(diff) == S.end()) { S[diff] = pos; } } int main() { // assert(freopen("sequence.in", "r", stdin)); // assert(freopen("sequence.out", "w", stdout)); cin.sync_with_stdio(false); cin >> N; for (int i = 0; i < N; i++) { cin >> A[i]; } for (int i = 0; i < N; i++) { cin >> B[i]; } int ans = 0; S[0] = 0; long long sa = 0; long long sb = 0; for (int i = 0; i < N; i++) { sa += A[i]; sb += B[i]; long long diff = sa - sb; int pos = getPos(diff); ans = max(ans, i - pos + 1); // cerr << i << ' ' << i - pos + 1 << endl; addPos(diff, i + 1); } cout << ans << endl; return 0; }