#include <bits/stdc++.h>

using namespace std;

#define MAXN 100005

int N;
int A[MAXN];
int B[MAXN];
map<long long, int> 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;
}