for(int i=0;i
int tmp=0;
for(int j=i;j
if(tmp+v[j]<=m){
flag[j]=1;
tmp+=v[j];
}
}
}
cnt++;
}
return cnt;
}
int TSP(){
for(int i=0;i<(1<
for(int j=0;j
for(int k=0;k
}
for(int i=0;i<(1<
for(int j=i&(i-1);j;j=i&(j-1))
best[i]=min(best[i],best[j]+best[(i-j)|1]);
return best[(1<
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
for(int i=0;i
Init();
int ans1=slove();
if(ans1==-1) {printf("-1 -1\n");continue;}
printf("%d %d\n",ans1,TSP());
}
return 0;
}