#include using namespace std; #include using namespace atcoder; using mint = modint1000000007; int main () { int N; cin >> N; std::vector A(N), B(N); for (auto& a : A) cin >> a; for (auto& b : B) cin >> b; for (int i = 0; i < N; i ++) { if (A[i] < 0) { A[i] *= -1; B[i] *= -1; } } { vector C, D; for (int i = 0; i < N; i ++) { if (A[i]) { C.push_back(A[i]); D.push_back(B[i]); } } A = C; B = D; } int M = A.size(); vector ID(M); iota(ID.begin(), ID.end(), 0); sort(ID.begin(), ID.end(), [&](int i, int j) {return B[i] * A[j] <= B[j] * A[i];}); long long D = -accumulate(A.begin(), A.end(), 0ll); for (auto& i : ID) { D += 2 * A[i]; if (D >= 0) { mint ans = B[i]; ans /= A[i]; cout << ans.val() << endl; return 0; } } }