#include<iostream>
#include<tr1/unordered_map>
#define NMAX 100005
using namespace std;
tr1::unordered_map<long long, int> m;
int n, a[NMAX], b[NMAX], sol;
//ifstream cin("seq.in");
//ofstream cout("seq.out");
int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        cin >> a[i];
    }
    for(int i = 1; i <= n; i++)
    {
        cin >> b[i];
    }
    //5
    //1 2 3 4 5
    //5 4 3 2 1

    long long sa = 0, sb = 0;
    m[0] = 0;
    for(int r = 1; r <= n; r++)
    {
        sa += a[r];
        sb += b[r];
        long long s = sa - sb;
        if(m.find(s) != m.end())
        {
            sol = max(sol, r - m[s]);
        }
        if(m.find(s) == m.end())
        {
            m[s] = r;
        }
    }
    cout << sol;
    return 0;
}