#include<bits/stdc++.h>
using namespace std;
long long ilosc[1000007];
long long przea[1000007];
long long przeb[1000007];
int n;
bool czy(long long x){
    //cout << x << endl;
    pair<long long, long long> akt, pom;
    akt.first=0;
    akt.second=x;
    for(int i=0; i<n; i++){
        long long a=przea[i], b=przeb[i], s=ilosc[i];
        if((min(a, b)*x)>s)return 0;
        else if(a==b){
            pom.first=0;
            pom.second=x;
        }
        else if(a>b){
            pom.first=x-((s-(x*b))/(a-b));
            pom.second=x;
        }
        else{
            pom.first=0;
            pom.second=(s-(x*a))/(b-a);
        }
        if(akt.first>pom.second)return 0;
        else if(akt.second<pom.first)return 0;
        else{
            akt.first=max(akt.first, pom.first);
            akt.second=min(akt.second, pom.second);
        }
    }
    return 1;
}
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin >> n;
    for(int i=0; i<n; i++)cin >> ilosc[i];
    for(int i=0; i<n; i++)cin >> przea[i];
    for(int i=0; i<n; i++)cin >> przeb[i];
    long long p=0, k=1000000000, s;
    while(p<k){
        //cout << s << endl;
        s=(p+k+1)/2;
        if(czy(s))p=s;
        else k=s-1;
    }
    cout << p;
}