#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; struct Coin{ int v,c; }; Coin coin[200]; int dp[100000+100]; int main() { int t,n,m; int p,h,c; int i,j,k; while(scanf("%d%d",&n,&m),n+m) { for(i=0;i<n;i++) { scanf("%d",&coin[i].v); } for(i=0;i<n;i++) { scanf("%d",&coin[i].c); } memset(dp,0,sizeof(dp)); dp[0]=1; for(i=0;i<n;i++) { int tot=coin[i].c; for(j=1;j<=tot;j*=2) { tot-=j; for(k=m;k>=j*coin[i].v;k--) { if(dp[k-j*coin[i].v]==1) dp[k]=1; } } if(tot!=0) { for(k=m;k>=tot*coin[i].v;k--) { if(dp[k-tot*coin[i].v]==1) dp[k]=1; } } } int ans=0; for(i=1;i<=m;i++) { if(dp[i]==1) ans++; } printf("%d ",ans); } return 0; }