显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int m,k;
vector<int>ans;
int main(){
freopen("Sequence.in","r",stdin);
freopen("Sequence.out","w",stdout);
int T;
scanf("%d",&T);
while(T--){
scanf("%d %d",&m,&k);
for(int i=0;i<=5;i++){
if((k>>i)&1){
m-=(1<<(1<<i))-1;
ans.push_back((1<<(1<<i))-1);
}
}
if(m<0){
printf("-1");
}else if(m==0){
printf("%d\n",ans.size());
for(auto v:ans)printf("%d ",v);
}else if(m==1){
bool f=0;
for(int i=0;i<ans.size();i++){
if(ans[i]==1){
ans[i]=2,f=1;
break;
}
}
if(!f)printf("-1");
else{
printf("%d\n",ans.size());
for(auto v:ans)printf("%d ",v);
}
}else if(!(m&1)){
ans.push_back(m>>1);
ans.push_back(m>>1);
printf("%d\n",ans.size());
for(auto v:ans)printf("%d ",v);
}else{
ans.push_back(1);
ans.push_back(2);
m-=3;
ans.push_back(m>>1);
ans.push_back(m>>1);
printf("%d\n",ans.size());
for(auto v:ans)printf("%d ",v);
}
printf("\n");
ans.clear();
}
return 0;
}