;
?for(int i=0;i ??if(flag[i]) continue;
??int tmp=0;?
??for(int j=i;j ???if(flag[j]==0){
????if(tmp+v[j]<=m){
?????flag[j]=1;
?????tmp+=v[j];
????}
???}
??}
??cnt++;
?}
?return cnt;
}
int TSP(){
?for(int i=0;i<(1< ??if(ok[i])
???for(int j=0;j ????if(i&(1< ?????best[i]=min(best[i],dp[j][i]+path[j][0]);
?????for(int k=0;k ??????if(!(i&(1< ???????dp[k][i|(1< ????}
?}
?for(int i=0;i<(1< ??if(i&1)? www.2cto.com
???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 ??for(int i=0;i ??for(int i=0;i<(1< ??Get_dist();
??Init();
??int ans1=slove();
??if(ans1==-1) {printf("-1 -1\n");continue;}
??printf("%d %d\n",ans1,TSP());
?}
?return 0;
}