#include <bits/stdc++.h>
#define all(v) begin(v), end(v)
#define fi first
#define se second
#define dbg(x) "[" #x " = " << x << "]"
#define left __left
#define right __right
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
using namespace std;
bool M1;
const int infINT = 1e9 + 123;
const long long inf = 1e18 + 123;
typedef pair<int, int > ii;
typedef pair<long long, int > lli;
const int MAXN = MASK(19) + 10;
int numVal, val[MAXN];
long long numLim, cost[MAXN];
pair<long long, int > tot[MAXN];
bool choose[MAXN];
void input(){
cin >> numVal >> numLim;
for(int i = 1; i <= numVal; i++) cin >> val[i];
for(int i = 1; i <= numVal; i++) cin >> cost[i];
}
bool check(const int &m){
for(int i = 1; i <= numVal; i++){
if (max(0, (m - val[i])) <= numLim / cost[i])
tot[i].fi = 1LL * max(0, (m - val[i])) * cost[i];
else
tot[i].fi = numLim + 1;
tot[i].se = i;
}
if (m < numVal) nth_element(tot + 1, tot + 1 + m, tot + 1 + numVal);
long long sum = 0;
for(int i = 1; i <= m; i++){
if (sum > numLim - tot[i].fi) return 0;
sum += tot[i].fi;
}
for(int i = 1; i <= numVal; i++){
choose[tot[i].se] = (i <= m);
}
return 1;
}
void solve(){
int l = 1, r = numVal, res = 0, m;
while(l <= r){
m = (l + r) >> 1;
if (check(m)) res = m, l = m + 1;
else r = m - 1;
}
cout << res << '\n';
for(int i = 1; i <= numVal; i++){
cout << (choose[i] ? max(res, val[i]): val[i]) - val[i] << ' ';
}
}
bool M2;
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define task "hindex"
if (fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
input();
solve();
cerr << (1.0 * clock()) / CLOCKS_PER_SEC << ".s\n";
cerr << (&M2 - &M1) / 1048576 << " mb\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGFsbCh2KSBiZWdpbih2KSwgZW5kKHYpCiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBkYmcoeCkgIlsiICN4ICIgPSAiIDw8IHggPDwgIl0iCgojZGVmaW5lIGxlZnQgX19sZWZ0CiNkZWZpbmUgcmlnaHQgX19yaWdodAoKI2RlZmluZSBNQVNLKGkpICgxTEwgPDwgKGkpKQojZGVmaW5lIEJJVCh4LCBpKSAoKCh4KSA+PiAoaSkpICYgMSkKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpib29sIE0xOwpjb25zdCBpbnQgaW5mSU5UID0gMWU5ICsgMTIzOwpjb25zdCBsb25nIGxvbmcgaW5mID0gMWUxOCArIDEyMzsKCnR5cGVkZWYgcGFpcjxpbnQsIGludCA+IGlpOwp0eXBlZGVmIHBhaXI8bG9uZyBsb25nLCBpbnQgPiBsbGk7Cgpjb25zdCBpbnQgTUFYTiA9IE1BU0soMTkpICsgMTA7CgppbnQgbnVtVmFsLCB2YWxbTUFYTl07CmxvbmcgbG9uZyBudW1MaW0sIGNvc3RbTUFYTl07CnBhaXI8bG9uZyBsb25nLCBpbnQgPiB0b3RbTUFYTl07CmJvb2wgY2hvb3NlW01BWE5dOwoKdm9pZCBpbnB1dCgpewogICAgY2luID4+IG51bVZhbCA+PiBudW1MaW07CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG51bVZhbDsgaSsrKSBjaW4gPj4gdmFsW2ldOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBudW1WYWw7IGkrKykgY2luID4+IGNvc3RbaV07Cn0KCmJvb2wgY2hlY2soY29uc3QgaW50ICZtKXsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbnVtVmFsOyBpKyspewogICAgICAgIGlmIChtYXgoMCwgKG0gLSB2YWxbaV0pKSA8PSBudW1MaW0gLyBjb3N0W2ldKQogICAgICAgICAgICB0b3RbaV0uZmkgPSAxTEwgKiBtYXgoMCwgKG0gLSB2YWxbaV0pKSAqIGNvc3RbaV07CiAgICAgICAgZWxzZQogICAgICAgICAgICB0b3RbaV0uZmkgPSBudW1MaW0gKyAxOwogICAgICAgIHRvdFtpXS5zZSA9IGk7CiAgICB9CgogICAgaWYgKG0gPCBudW1WYWwpIG50aF9lbGVtZW50KHRvdCArIDEsIHRvdCArIDEgKyBtLCB0b3QgKyAxICsgbnVtVmFsKTsKCiAgICBsb25nIGxvbmcgc3VtID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKXsKICAgICAgICBpZiAoc3VtID4gbnVtTGltIC0gdG90W2ldLmZpKSByZXR1cm4gMDsKICAgICAgICBzdW0gKz0gdG90W2ldLmZpOwogICAgfQoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbnVtVmFsOyBpKyspewogICAgICAgIGNob29zZVt0b3RbaV0uc2VdID0gKGkgPD0gbSk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnZvaWQgc29sdmUoKXsKICAgIGludCBsID0gMSwgciA9IG51bVZhbCwgcmVzID0gMCwgbTsKICAgIHdoaWxlKGwgPD0gcil7CiAgICAgICAgbSA9IChsICsgcikgPj4gMTsKICAgICAgICBpZiAoY2hlY2sobSkpIHJlcyA9IG0sIGwgPSBtICsgMTsKICAgICAgICBlbHNlIHIgPSBtIC0gMTsKICAgIH0KICAgIGNvdXQgPDwgcmVzIDw8ICdcbic7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG51bVZhbDsgaSsrKXsKICAgICAgICBjb3V0IDw8IChjaG9vc2VbaV0gPyBtYXgocmVzLCB2YWxbaV0pOiB2YWxbaV0pIC0gdmFsW2ldIDw8ICcgJzsKICAgIH0KfQoKYm9vbCBNMjsKc2lnbmVkIG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgI2RlZmluZSB0YXNrICJoaW5kZXgiCiAgICBpZiAoZm9wZW4odGFzayIuaW5wIiwgInIiKSl7CiAgICAgICAgZnJlb3Blbih0YXNrIi5pbnAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKHRhc2siLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGlucHV0KCk7CiAgICBzb2x2ZSgpOwogICAgY2VyciA8PCAoMS4wICogY2xvY2soKSkgLyBDTE9DS1NfUEVSX1NFQyA8PCAiLnNcbiI7CiAgICBjZXJyIDw8ICgmTTIgLSAmTTEpIC8gMTA0ODU3NiA8PCAiIG1iXG4iOwp9