#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define mp make_pair
#define FAST ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define INF INT_MAX
#define ff first
#define ss second
#define all(v) v.begin(),v.end()
#define nl "\n"
using namespace std;
const ll MOD = 1e9+7;
const int mxN = 2e5+1;
ll n ;
ll p[mxN] , q[mxN];
ll woRepwoOrd(ll n , ll m){
if(m == 0 )return 1;
ll ans = 1;
for(ll i = n ; i>max(n-m , m) ;i--){
ans = ((ans%MOD)*(i%MOD))%MOD;
}
ll k = 1 ;
for(ll i= min(n-m , m); i>1;i--){
k = ((k%MOD)*(i%MOD))%MOD;
}
ans/=k;
return ans ;
}
int main()
{
FAST
//==================
ll t = 1 ;
//cin >> t;
while(t--){
cin >> n;
for(int i=1 ;i<=n;i++)cin >>p[i];
for(int i=1 ;i<=n;i++)cin >>q[i];
ll moves = 0 ;
ll ans =0 ;
bool is =1 ;
for(int i=1 ;i<=n;i++){
if((q[i] - p[i])%i != 0){
is=0;
break;
}else{
moves+=(q[i] - p[i])/i;
}
}
if(!is){
cout << 0 << nl;
}else{
cout << woRepwoOrd(moves , n) << nl;
}
}
}
Copy