#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll n,h,t[105],sum[105],ans,ma;
struct node
{
long long v,d,id;
}m[105],x;
bool operator<(node a,node b)
{
return a.v<b.v;
}
priority_queue<node>q;
int main()
{
cin>>n>>h;
h*=12;
for(int i=1;i<=n;i++)
cin>>m[i].v;
for(int i=1;i<=n;i++)
cin>>m[i].d;
for(int i=1;i<=n-1;i++)
{
cin>>t[i];
sum[i]=sum[i-1]+t[i];
m[i].id=i;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
q.push(m[j]);
//cout<<q.top().v<<" ";
ans=0;
for(int j=0;j<=h-(sum[i]-t[i])&&q.top().v>0;j++)
{
ans+=q.top().v;
//cout<<q.top().v<<" ";
x.v=q.top().v-q.top().d;
x.id=q.top().id;
x.d=q.top().d;
q.pop();
q.push(x);
}
//cout<<ans;
ma=max(ma,ans);
}
cout<<ma;
return 0;
}