#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
const int MAX=20000+10;
const int INF=1000000;
const int NUM=200+10;
int n,K;
int b[MAX],c[MAX];
int f[NUM][MAX],come_num[NUM][MAX];
int q[MAX],bot,top;
int main()
{
int i,j,k;
cin>>n;
REP(i,1,n)
scanf("%d",&b[i]);
REP(i,1,n)
scanf("%d",&c[i]);
REP2(i,0,NUM)
REP2(j,0,MAX)
f[i][j]=INF;
f[0][0]=0;
REP(i,1,n)
{
int u=b[i];
REP2(j,0,u)
{
bot=1;
top=0;
for(k=j;k<MAX;k+=u)
{
while(top>=bot && f[i-1][k] - k/u <f[i-1][ q[top] ] - q[top]/u )
--top;
q[++top]=k;
while(q[bot]+c[i]*u<k && bot<=top)
bot++;
if(bot<=top)
{
int val=(k-q[bot])/u;
f[i][k]=f[i-1][q[bot]]+val;
come_num[i][k]=val;
}
}
}
}
vector<int> ans(n+1,0);
int sum=0;
cin>>K;
for(i=n;i>=1;--i)
{
int val=come_num[i][K];
sum+=val;
ans[i]=val;
K-=b[i]*val;
}
cout<<sum<<endl;
REP(i,1,n)
cout<<ans[i]<<" ";
cout<<endl;
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCmNvbnN0IGludCBNQVg9MjAwMDArMTA7CmNvbnN0IGludCBJTkY9MTAwMDAwMDsKY29uc3QgaW50IE5VTT0yMDArMTA7CgppbnQgbixLOwppbnQgYltNQVhdLGNbTUFYXTsKaW50IGZbTlVNXVtNQVhdLGNvbWVfbnVtW05VTV1bTUFYXTsKaW50IHFbTUFYXSxib3QsdG9wOwoKaW50IG1haW4oKQp7CglpbnQgaSxqLGs7CgljaW4+Pm47CglSRVAoaSwxLG4pCgkJc2NhbmYoIiVkIiwmYltpXSk7CglSRVAoaSwxLG4pCgkJc2NhbmYoIiVkIiwmY1tpXSk7CglSRVAyKGksMCxOVU0pCgkJUkVQMihqLDAsTUFYKQoJCQlmW2ldW2pdPUlORjsKCWZbMF1bMF09MDsKCVJFUChpLDEsbikKCXsKCQlpbnQgdT1iW2ldOwoJCVJFUDIoaiwwLHUpCgkJewoJCQlib3Q9MTsKCQkJdG9wPTA7CgkJCWZvcihrPWo7azxNQVg7ays9dSkKCQkJewoJCQkJd2hpbGUodG9wPj1ib3QgJiYgZltpLTFdW2tdIC0gay91IDxmW2ktMV1bIHFbdG9wXSBdIC0gcVt0b3BdL3UgKQoJCQkJCS0tdG9wOwoJCQkJcVsrK3RvcF09azsKCQkJCXdoaWxlKHFbYm90XStjW2ldKnU8ayAmJiBib3Q8PXRvcCkKCQkJCQlib3QrKzsKCQkJCWlmKGJvdDw9dG9wKQoJCQkJewoJCQkJCWludCB2YWw9KGstcVtib3RdKS91OwoJCQkJCWZbaV1ba109ZltpLTFdW3FbYm90XV0rdmFsOwoJCQkJCWNvbWVfbnVtW2ldW2tdPXZhbDsKCQkJCX0KCQkJfQoJCX0KCX0KCXZlY3RvcjxpbnQ+IGFucyhuKzEsMCk7CglpbnQgc3VtPTA7CgljaW4+Pks7Cglmb3IoaT1uO2k+PTE7LS1pKQoJewoJCWludCB2YWw9Y29tZV9udW1baV1bS107CgkJc3VtKz12YWw7CgkJYW5zW2ldPXZhbDsKCQlLLT1iW2ldKnZhbDsKCX0KCWNvdXQ8PHN1bTw8ZW5kbDsKCVJFUChpLDEsbikKCQljb3V0PDxhbnNbaV08PCIgIjsKCWNvdXQ8PGVuZGw7CglyZXR1cm4gMDsKfQo=