#include using namespace std; //ifstream fin("default.in"); //ofstream fout("default.out"); const int MAX = 5e5 + 5; long long a[MAX], b[MAX], v[MAX]; int n; unordered_map> sums; vector keys; int main() { cin >> n; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 1; i <= n; i++) { cin >> b[i]; v[i] = a[i] - b[i]; } long long currentSum = 0; sums[0].push_back(0); keys.push_back(0); for (int i = 1; i <= n; i++) { currentSum += v[i]; if (!sums.count(currentSum)) keys.push_back(currentSum); sums[currentSum].push_back(i); } int sola = -1, solb = -1; for (auto key : keys) { //cerr << "SUM = " << key << endl; if (sums[key].size() == 1) continue; int minn = n; int maxx = 0; for (auto ind : sums[key]) { //cerr << ind << ' '; minn = min(ind, minn); maxx = max(ind, maxx); } //cerr << endl; if (maxx - minn >= solb - sola) { sola = minn; solb = maxx; } } cout << (sola == -1 ? 0 : solb - sola); return 0; }