int@n,@m,@a[n],b[],z=0; sortA(n,a); LHeap<int>h; h.malloc(n,1); rep(i,1,n){ bool f=false; while(h.size){ int j=h.hp[0]; int v=h.val[j]; if(v>a[i]){ break; } if(v<a[i]){ wt(-1); exit(0); } f=true; if(v+b[j]<=m){ h.change(j,v+b[j]); }else{ h.pop(); } } if(!f){ b[z]=a[i]; h.change(z,2b[z]); ++z; } } if(h.size){ int j=h.hp[0]; int v=h.val[j]; if(v<=m){ wt(-1); exit(0); } } wt(z); wt(b(z));