#include using namespace std; using pii = pair; using ll = long long; const int N = 2000010, MOD = 1e9 + 7, INF = 0x3f3f3f3f; int n, m, w[N]; ll qmi(ll a, ll b, ll c) { ll res = 1; while (b) { if (b & 1) res = res * a % c; a = a * a % c; b >>= 1; } return res; } pii a[N]; void solve() { scanf("%d", &n); for (int i = 1; i < n + 1; i++) scanf("%d", &a[i].first); for (int i = 1; i < n + 1; i++) scanf("%d", &a[i].second); sort(a + 1, a + n + 1, [&](const pii& a, const pii& b) { double l = a.first ? (double)a.second / a.first : a.second >= 0 ? 1e12 : -1e12, r = b.first ? b.second / b.first : a.second >= 0 ? 1e12 : -1e12; return l < r; }); ll lx = 0, ly = 0, rx = 0, ry = 0, res = 0; double t = 1e30; for (int i = 1; i < n + 1; i++) rx += a[i].first, ry += a[i].second; for (int i = 1; i < n + 1; i++) { rx -= a[i].first, ry -= a[i].second; lx += a[i].first, ly += a[i].second; double p = a[i].first ? (double)a[i].second / a[i].first : a[i].second >= 0 ? 1e12 : -1e12, v = lx * p - ly + ry - rx * p; if (v < t) t = v, res = (ll)(a[i].second + MOD) % MOD * qmi(a[i].first, MOD - 2, MOD) % MOD; } printf("%lld\n", res); } int main() { int T = 1; // scanf("%d", &T); while (T--) solve(); return 0; }