#include #if __has_include() #include using namespace atcoder; #endif #define rep(i, n) for (int i = 0; i < (n); ++i) #define fi first #define se second using std::cin; using std::cout; using std::vector; using ll = long long; using P = std::pair; using mint = modint1000000007; int main() { int n; cin >> n; vector

p(n); rep(i, n) cin >> p[i].fi; rep(i, n) cin >> p[i].se; sort(p.begin(), p.end(), [&](P l, P r) { return r.fi*(l.se-1) > l.fi*(r.se-1); }); mint ans, x = 1; for (auto [a, b] : p) { ans += x*a; x *= b; } cout << ans.val() << '\n'; return 0; }