#include <iostream>
#include <vector>
using namespace std;

int main() {

    long long n, budget;
    cin >> n;
    cin >> budget;
    
    vector<long long> comp(n), stock(n), cost(n);
    for(long long i = 0; i < n; i++) cin >> comp[i];
    for(long long i = 0; i < n; i++) cin >> stock[i];
    for(long long i = 0; i < n; i++) cin >> cost[i];
    
    long long units = 0;
    long long low = 0, high = 2e12;
    
    while(low <= high){
        long long mid = (low + high) / 2;
        long long sum = 0;

        
        for(long long j = 0; j < n; j++){
            long long required = comp[j] * mid;
            long long need = required - stock[j];
            if(need < 0) 
            	need = 0;
            sum += need * cost[j];
        }
        
        if(sum <= budget){
            units = mid;     
            low = mid + 1;
        } else {
            high = mid - 1;   
        }
    }
    
    cout << units << "\n";
    return 0;
}