Only AC on #1 3 4 5 16
#include<bits/stdc++.h>
using namespace std;
vector<long long> v[5003];
int main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
long long t;
cin>>t;
while(t--){
long long n,k,M=0;
cin>>n>>k;
if(k==1){
cout<<3<<endl;
if(n%2){
cout<<1<<" "<<n/2<<" "<<n/2<<endl;
}
else{
cout<<2<<" "<<n/2-1<<" "<<n/2-1<<endl;
}
continue;
}
for(long long i=30;i>=0;i--){
if(k>=(1<<i)){
v[t].push_back((1<<(1<<i))-1);
k-=(1<<i);
M+=(1<<(1<<i))-1;
}
}
M=n-M;
if(M==1 or M<0){
cout<<-1<<endl;
continue;
}
if(M%2){
v[t].push_back(1);
v[t].push_back(2);
v[t].push_back((M-3)/2);
v[t].push_back((M-3)/2);
}
else{
v[t].push_back(M/2);
v[t].push_back(M/2);
}
cout<<v[t].size()<<endl;
for(long long i=0;i<v[t].size();i++){
cout<<v[t][i]<<" ";
}
cout<<endl;
}
return 0;
}