#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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CgogICAgbG9uZyBsb25nIG4sIGJ1ZGdldDsKICAgIGNpbiA+PiBuOwogICAgY2luID4+IGJ1ZGdldDsKICAgIAogICAgdmVjdG9yPGxvbmcgbG9uZz4gY29tcChuKSwgc3RvY2sobiksIGNvc3Qobik7CiAgICBmb3IobG9uZyBsb25nIGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gY29tcFtpXTsKICAgIGZvcihsb25nIGxvbmcgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBzdG9ja1tpXTsKICAgIGZvcihsb25nIGxvbmcgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBjb3N0W2ldOwogICAgCiAgICBsb25nIGxvbmcgdW5pdHMgPSAwOwogICAgbG9uZyBsb25nIGxvdyA9IDAsIGhpZ2ggPSAyZTEyOwogICAgCiAgICB3aGlsZShsb3cgPD0gaGlnaCl7CiAgICAgICAgbG9uZyBsb25nIG1pZCA9IChsb3cgKyBoaWdoKSAvIDI7CiAgICAgICAgbG9uZyBsb25nIHN1bSA9IDA7CgogICAgICAgIAogICAgICAgIGZvcihsb25nIGxvbmcgaiA9IDA7IGogPCBuOyBqKyspewogICAgICAgICAgICBsb25nIGxvbmcgcmVxdWlyZWQgPSBjb21wW2pdICogbWlkOwogICAgICAgICAgICBsb25nIGxvbmcgbmVlZCA9IHJlcXVpcmVkIC0gc3RvY2tbal07CiAgICAgICAgICAgIGlmKG5lZWQgPCAwKSAKICAgICAgICAgICAgCW5lZWQgPSAwOwogICAgICAgICAgICBzdW0gKz0gbmVlZCAqIGNvc3Rbal07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmKHN1bSA8PSBidWRnZXQpewogICAgICAgICAgICB1bml0cyA9IG1pZDsgICAgIAogICAgICAgICAgICBsb3cgPSBtaWQgKyAxOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGhpZ2ggPSBtaWQgLSAxOyAgIAogICAgICAgIH0KICAgIH0KICAgIAogICAgY291dCA8PCB1bml0cyA8PCAiXG4iOwogICAgcmV0dXJuIDA7Cn0=