#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[100005],w[105],c[105],sum[100005];
int main(){
int n,m,ans;
while(~scanf("%d%d",&n,&m)){
if(n == 0&&m == 0)
break;
for(int i = 1;i<=n;++i)
scanf("%d",&w[i]);
for(int i = 1;i<=n;++i)
scanf("%d",&c[i]);
memset(dp,0,sizeof(dp));
dp[0] = 1;
ans = 0;
for(int i = 1;i<=n;++i){
memset(sum,0,sizeof(sum));
for(int j = w[i];j<=m;++j){
if(!dp[j] && dp[j-w[i]] && sum[j-w[i]] < c[i]){
dp[j] = 1;
sum[j] = sum[j-w[i]] + 1;
++ans;
}
}
}
cout<<ans<<endl;
}
return 0;
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int dp[100005],w[105],c[105],sum[100005];
int main(){
int n,m,ans;
while(~scanf("%d%d",&n,&m)){
if(n == 0&&m == 0)
break;
for(int i = 1;i<=n;++i)
scanf("%d",&w[i]);
for(int i = 1;i<=n;++i)
scanf("%d",&c[i]);
memset(dp,0,sizeof(dp));
dp[0] = 1;
ans = 0;
for(int i = 1;i<=n;++i){
memset(sum,0,sizeof(sum));
for(int j = w[i];j<=m;++j){
if(!dp[j] && dp[j-w[i]] && sum[j-w[i]] < c[i]){
dp[j] = 1;
sum[j] = sum[j-w[i]] + 1;
++ans;
}
}
}
cout<<ans<<endl;
}
return 0;
}