//Author: Bishal Sarang
#include <bits/stdc++.h>
using namespace std;

//typedefs
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<ull> vull;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef vector<pii> vpii;
typedef map<int, int> mii;
typedef priority_queue<pii, vpii, greater<pii> > pq;
typedef tuple<int, int, int> tp;

//Constants
const int INF = (int)2 * 1e9;
const ll MOD = 1000000007;
const long double PI = 3.1415926;
const long double EPS = 1e-6;

#define all(x) (x).begin(), (x).end()
#define rall(x) (x).rbegin(), (x).rend()
#define what(x) cerr << #x << " => " << x << endl;
#define print_r(x) for(auto i = 0; i < x.size(); i++) what(x[i]);
#define print_grid(x) for(auto i = 0; i < x.size(); i++){for(auto j = 0; j < x[0].size(); j++){cout << x[i][j];}cout << endl;}
#define gridM(type, n, m) vector<vector<type>> grid(n, vector<type>(m))

template <typename T>vector<T> prefix_sum(vector<T> nums){vector<T> pre_sum(nums.size());partial_sum(nums.begin(), nums.end(), pre_sum.begin());return pre_sum;}
vector<string> split(string s, char sep){int prev_index = 0;int i = 0;vector<string> words;for(i = 0; i < s.size(); i++){if(s[i] == sep){words.push_back(s.substr(prev_index, i - prev_index));prev_index = i + 1;}}words.push_back(s.substr(prev_index, (s.size() - prev_index )));return words;}

void read(){
  //stime = clock();
  #ifdef DEBUG
    freopen("in.txt", "r", stdin);
   #endif // DEBUG
   cin.sync_with_stdio(false);
   cin.tie(0);
}



int main(){
 //read();
 int n; cin >> n;
 vector<int> a(n), b(n);

 for(int i = 0; i < n; i++){
  cin >> a[i];
  //cout << a[i] << endl;
 }

 for(int i = 0; i < n; i++){
  cin >> b[i];
 }



  for(int i = 1; i < n; i++){
    a[i] = a[i] + a[i - 1];
    b[i] = b[i] + b[i - 1];
  }


  int ans = 0;
  for(int l = 0; l < n; l++){
    for(int r = l; r < n; r++){
      //cout << l << " to " << r << " ";
      if(l == r){
        if(a[l] == b[l])
          ans = max(ans, l + 1);
          //cout << a[r] ;
      }
      else if(l - 1 >= 0){
        if(a[r] - a[l - 1] == b[r] - b[l - 1])
          ans = max(ans, r - l + 1);
        //cout << a[r] << " - " << a[l - 1];
      }

      //cout << "\n";

    }
 }

  cout << ans;

 return 0;
}