#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
long long budget;
cin >> n >> budget;
vector<long long> comp(n), stock(n), cost(n);
for (int i = 0; i < n; i++) cin >> comp[i];
for (int i = 0; i < n; i++) cin >> stock[i];
for (int i = 0; i < n; i++) cin >> cost[i];
long long lo = 0, hi = 1e18;
long long ans = 0;
while (lo <= hi) {
long long mid = (lo + hi) / 2;
long long total = 0;
bool ok = true;
for (int i = 0; i < n; i++) {
long long need = comp[i] * mid - stock[i];
if (need > 0) {
total += need * cost[i];
if (total > budget) { ok = false; break; } // early exit
}
}
if (ok) { ans = mid; lo = mid + 1; }
else hi = mid - 1;
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKICAgIGludCBuOwogICAgbG9uZyBsb25nIGJ1ZGdldDsKICAgIGNpbiA+PiBuID4+IGJ1ZGdldDsKICAgIHZlY3Rvcjxsb25nIGxvbmc+IGNvbXAobiksIHN0b2NrKG4pLCBjb3N0KG4pOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBjb21wW2ldOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIGNpbiA+PiBzdG9ja1tpXTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSBjaW4gPj4gY29zdFtpXTsKCiAgICBsb25nIGxvbmcgbG8gPSAwLCBoaSA9IDFlMTg7CiAgICBsb25nIGxvbmcgYW5zID0gMDsgICAKICAgIHdoaWxlIChsbyA8PSBoaSkgewogICAgICAgIGxvbmcgbG9uZyBtaWQgPSAobG8gKyBoaSkgLyAyOwogICAgICAgIGxvbmcgbG9uZyB0b3RhbCA9IDA7CiAgICAgICAgYm9vbCBvayA9IHRydWU7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICAgICAgbG9uZyBsb25nIG5lZWQgPSBjb21wW2ldICogbWlkIC0gc3RvY2tbaV07CiAgICAgICAgICAgIGlmIChuZWVkID4gMCkgewogICAgICAgICAgICAgICAgdG90YWwgKz0gbmVlZCAqIGNvc3RbaV07CiAgICAgICAgICAgICAgICBpZiAodG90YWwgPiBidWRnZXQpIHsgb2sgPSBmYWxzZTsgYnJlYWs7IH0gIC8vIGVhcmx5IGV4aXQKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAob2spIHsgYW5zID0gbWlkOyBsbyA9IG1pZCArIDE7IH0KICAgICAgICBlbHNlIGhpID0gbWlkIC0gMTsKICAgIH0KICAgIGNvdXQgPDwgYW5zOwp9