显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int t;
int m,k;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>t;
vector<int> v;
while(t--){
cin>>m>>k;
bool iso=false;
int sum=0;
v.clear();
for(int i=5;i>=1;i--){
int r=(1<<i);
if(k>=r){
k-=r;
v.push_back((1<<r)-1);
sum+=(1<<r)-1;
}
}
if(k){
iso=true;
v.push_back(1);
sum++;
}
if(sum>m){
cout<<(-1)<<"\n";
continue;
}
m-=sum;
if(m==1){
if(iso){
v.pop_back();
v.push_back(2);
}else{
cout<<-1<<"\n";
continue;
}
}else if(m!=0){
if(!(m&1)){
v.push_back(m>>1);
v.push_back(m>>1);
}else{
v.push_back(1);
v.push_back(2);
if(m>=4){
v.push_back((m-3)>>1);
v.push_back((m-3)>>1);
}
}
}
cout<<v.size()<<"\n";
for(int i:v){
cout<<i<<" ";
}
cout<<"\n";
}
return 0;
}