#include<bits/stdc++.h>
#define int long long
using namespace std;
const int mod = 1e9 + 7, maxn = 5e5 + 5;
int n, ans = 1;
vector<int> a(1), b(1);
bitset<maxn> vis;
void dfs(int x, int tot, int k){
int tmp = max(k * a[x], k + b[x]) % mod;
if(vis[x])
return;
if(tot == n){
ans = max(ans, tmp);
return;
}vis.set(x);
for(int i = 1; i <= n; ++i)
dfs(i, tot + 1, tmp);
vis.reset(x);
}signed main(){
scanf("%lld", &n);
for(int i = 1; i <= n; ++i){
int k;
scanf("%lld", &k);
a.push_back(k);
}for(int i = 1; i <= n; ++i){
int k;
scanf("%lld", &k);
b.push_back(k);
}dfs(0, 0, 1);
printf("%lld", ans);
return 0;
}