#include #include #include #include #include #include #include #include using namespace std; const int maxn=1e2+10; const int maxm=2e4+10; const int INF=1e8; int c[maxn],v[maxn],f[maxm],g[maxm]; int main() { int n,m,tt=0; while(scanf("%d%d",&n,&m)!=EOF) { if(n==0&&m==0)break; int i,j,k; for(i=0;i=20000) { for(j=v[i];j<=20000;j++) f[j]=min(f[j],f[j-v[i]]+1); continue; } for(k=1;k=v[i]*k;j--) f[j]=min(f[j],f[j-v[i]*k]+k); c[i]-=k; } for(j=20000;j>=c[i]*v[i];j--) f[j]=min(f[j],f[j-v[i]*c[i]]+c[i]); } int ans=INF; for(i=m;i<=20000;i++) ans=min(ans,f[i]+g[i-m]); if(ans==INF)ans=-1; printf("Case %d: %d\n",++tt,ans); } return 0; }