#include <map>
#include <cmath>
#include <math.h>
#include <vector>
#include <cstdio>
#include <string>
#include <time.h>
#include <climits>
#include <cstring>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <algorithm>
#define int long long
#define db double
#define fz0(i, x) for (int i = 0; i < x; i++)
#define ff0(i, x) for (int i = x - 1; i >= 0; i--)
#define fz1(i, x) for (int i = 1; i <= x; i++)
#define ff1(i, x) for (int i = x; i >= 1; i--)
using namespace std;
const int N = 2e5 + 10;
void debug(int a[], int fir, int end)
{
for (int i = fir; i <= end; i++)
cout << a[i] << ' ';
cout << endl;
}
int n, ans, cnt_ans, cnt;
int a[N], b[N];
vector<long double> d;
void input()
{
cin >> n;
fz1(i, n) cin >> a[i];
fz1(i, n) cin >> b[i];
return;
}
void work()
{
fz1(i, n)
{
if (a[i] != 0)
d.push_back(b[i] * 1.0 / a[i]);
if(a[i] == 0 && b[i] == 0)
cnt_ans++;
}
if (!d.size())
return;
sort(d.begin(), d.end());
cnt = 1, ans = 1;
fz1(i, d.size() - 1)
{
if (d[i] != d[i - 1])
cnt = 0;
ans = max(ans, ++cnt);
}
return;
}
void output()
{
cout << ans + cnt_ans << endl;
}
signed main()
{
input();
work();
output();
return 0;
}