显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=110;
int T,ans[N];
int main()
{
freopen("Sequence.in","r",stdin);
freopen("Sequence.out","w",stdout);
cin>>T;
while(T)
{
T--;
int m,k;
bool flag=false;
cin>>m>>k;
memset(ans,0,sizeof(ans));
int v=0,a=0;
for(int i=5;i>=1;i--){
int p=(1<<i);
if(k>=p){
k-=p;
ans[++a]=(1<<p)-1;
v+=(1<<p)-1;
}
}
if(k){
flag=true;
ans[++a]=1;
v++;
}
v=m-v;
if(v<0){
cout<<-1<<endl;
continue;
}else if(v==1){
if(flag){
ans[a]=2;
v--;
}else{
cout<<-1<<endl;
continue;
}
}else if(v%2==1){
ans[++a]=1;
ans[++a]=2;
v-=3;
}
if(v){
ans[++a]=v/2;
ans[++a]=v/2;
}
cout<<a<<endl;
for(int i=1;i<=a;i++) cout<<ans[i]<<' ';
cout<<endl;
}
return 0;
}