#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
/*
枚举以不同湖结束的情况(路上时间固定),从其中每次选钓鱼量最大的(注意在这里不需要考虑顺序,因为迟早为轮到这个点)
在前面不同湖里钓鱼时间 int t[i][j] i为结束时在j点上钓鱼花费时间
ti[],di[],fi[]
枚举的时候要创建临时数组temp保存fi的值,在temp上修改
*/
#define MAXN 100
int n,h;
int fi[MAXN],ti[MAXN],di[MAXN];
int temp[MAXN];//保存临时鱼的数量
int sum[MAXN];
int time[MAXN][MAXN];//以i点结束时在j点停留的时间
void solve()
{
memset(time,0,sizeof(time));
memset(sum,0,sizeof(sum));
for(int i=1;i<=n;i++)
{
memcpy(temp,fi,sizeof(fi));
int T = h*60;
for(int j=1;j<i;j++) T-=ti[j]*5;
while(T>0)
{
int k = max_element(temp+1,temp+i+1)-temp;
//cout<<";;"<<k<<endl<<";;"<<*max_element(temp+1,temp+i+1)<<endl;
time[i][k]+=5;
sum[i]+=temp[k];
temp[k]-=di[k];
if(temp[k]<0) temp[k] = 0;
T=T-5;
}
}
int l = max_element(sum+1,sum+n+1)-sum;
//cout<<";;"<<l<<endl;
for(int i=1;i<=n;i++)
{
if(i!=1) printf(", ");
printf("%d",time[l][i]);
}
printf("\nNumber of fish expected: %d\n\n",sum[l]);
}
int main()
{
while(scanf("%d",&n))
{
if(n==0) break;
scanf("%d",&h);
for(int i=1;i<=n;i++)
{
scanf("%d",&fi[i]);
}
for(int i=1;i<=n;i++)
{
scanf("%d",&di[i]);
}
for(int i=1;i<=n-1;i++)
{
scanf("%d",&ti[i]);
}
solve();
}
return 0;
}