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));