#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
//谢谢博友好文章和程序 贪心 枚举
//2
//1
//0 0
//0 0
//2
//0, 0
//Number of fish expected: 0
struct da{
int x;
int y;
};
bool fun(da a,da b)
{
if(a.x==b.x)
{
return a.y<b.y;
}else
{
return a.x>b.x;
}
}
int n,h,sta[30],yu[30],lu[30],sc[30];
int jg;
vector<da> ve;
int f;
void diaoyu(int tn,int lc)
{
ve.clear();
for(int i=0;i<tn;i++)
{
int diao=sta[i];
for(int j=0;j<(h-lc);j++)
{
da t;
t.x=diao;
t.y=i;
ve.push_back(t);
diao=diao-yu[i];
if(diao<0)
{
diao=0;
}
}
}
sort(ve.begin(),ve.end(),fun);
int js=0;
int td[30];
memset(td,0,sizeof(td));
for(int i=0;i<(h-lc);i++)
{
js=js+ve[i].x;
td[ve[i].y]++;
}
if((js>jg)||(js==0 && jg==0 && f==0))//路程由小到大
{
/*
cout<<lc<<endl;
for(int i=0;i<ve.size();i++)
{
cout<<"["<<ve[i].x<<" "<<ve[i].y<<"]"<<" ";
}
cout<<endl;*/
jg=js;
for(int i=0;i<30;i++)
{
sc[i]=td[i];
}
f=1;
}
}
int main()
{
while(1)
{
memset(sta,0,sizeof(sta));
memset(yu,0,sizeof(yu));
memset(lu,0,sizeof(lu));
memset(sc,0,sizeof(sc));
jg=0;
f=0;
cin>>n;
if(n==0)
{
break;
}
cin>>h;
h=h*12;
for(int i=0;i<n;i++)
{
cin>>sta[i];//鱼塘i开始能钓起的鱼
}
for(int i=0;i<n;i++)
{
cin>>yu[i];//鱼塘i每5分钟钓上的鱼
}
for(int i=0;i<n-1;i++)
{
cin>>lu[i];//第i个鱼塘到第i+1个鱼塘的路程
}
int zg=0;
int tt=1;
for(int i=0;i<n;i++)
{
diaoyu(tt,zg);
if(i<(n-1))
{
zg=zg+lu[i];
}
tt++;
}
for(int i=0;i<n;i++)
{
cout<<sc[i]*5;
if(i!=(n-1))
{
cout<<", ";
}
}
cout<<endl;
cout<<"Number of fish expected: "<<jg<<endl;
cout<<endl;
/*
for(int i=0;i<n;i++)
{
cout<<pool[i]<<" ";
}
cout<<endl;
for(int i=0;i<n;i++)
{
cout<<yu[i]<<" ";
}
cout<<endl;
for(int i=0;i<n-1;i++)
{
cout<<lu[i]<<" ";
}
cout<<endl;
*/
}
return 0;
}