#include<iostream>
using namespace std;
int n[21],c[21],w[21][21],p[21][21],sumw,sump;
void search(int x,int a)
{
if( n[x] == 0 )
{
cout<<"0"<<endl;
}
else
{
int i,max,b;
for( i = a ; i <= n[x] ; i++ )
{
if( a == 1 )
{
sumw = 0;
sump = 0;
}
search( x , i+1 );
if( sumw + w[x][i] <= c[x] )
{
sumw += w[x][i];
sump += p[x][i];
}
if( i == 1 )
{
max = sump;
}
if( a == 1 && i != 1 )
{
if( max < sump)
{
max = sump;
}
}
}
if(a==1)
{
cout<<max<<endl;
}
}
}
int main()
{
int i,j;
for( i = 1 ; ; i++ )
{
cin>>n[i]>>c[i];
if( n[i] == 0 && c[i] == 0 )
{
break;
}
for( j = 1 ; j <= n[i] ; j++ )
{
cin>>w[i][j];
}
for( j = 1 ; j <= n[i] ; j++ )
{
cin>>p[i][j];
}
}
i = 1;
while( n[i] != 0 || c[i] != 0 )
{
search( i , 1 );
i++;
}
}