#include <bits/stdc++.h>

using namespace std;


const int N = 2e5 + 5;

int t;
int n;
long long a[N], b[N];


const long long mod = 1e9 + 7; 

map < pair < int , int >, long long > cnt;


void solve() {

	cin >> n;

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

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

		if(a[i] == 0) b[i] = 1;
		if(b[i] == 0) a[i] = 1;

		if(a[i] == 0 || b[i] == 0){
			if(a[i] == 0 and b[i] == 0) continue;
			if(a[i] == 0){
				cnt[{1 , 0}]++;
			}
			else{
				cnt[{1, 0}]++;
			}
		} else{
			long long g = __gcd(abs(a[i]), abs(b[i]));
			a[i] /= g;
			b[i] /= g;

			if(a[i] < 0){
				cnt[{b[i],a[i]}]++;
			}
			else{
				cnt[{a[i], b[i]}]++;
			}
		}

	}
	long long ans = 1;
	for (auto p : cnt){
		ans = ans * p.second;
		ans %= mod;
	}
}

int main(){
	t = 1;

	while(t--){
		solve();
	}
}