#include <bits/stdc++.h>
using namespace std;
bool isPowerOfTwo(int num)
{
if (num <= 0) return false;
return (num & (num - 1)) == 0;
}
bool isAllSet(int num)
{
if(isPowerOfTwo(num+1))
{
return true;
}
return false;
}
int numberOfBits(int num)
{
int count = 0;
while(num)
{
num >>= 1;
count++;
}
return count;
}
int binaryToDecimal(string& binaryStr)
{
int decimal = 0;
int length = binaryStr.length();
for (int i = 0; i < length; ++i)
{
if (binaryStr[i] == '1')
{
decimal += pow(2, (length - i - 1));
}
}
return decimal;
}
int makeAllSetBits(int n)
{
string s = "";
for(int i=0; i<n; i++)
{
s+='1';
}
return binaryToDecimal(s);
}
vector<int> maximizeSetBits(int n, int k)
{
if(n==1)
{
return {k};
}
if(n==2)
{
return {k, 0};
}
if(isAllSet(k))
{
vector<int> answer(n, 0);
answer[0] = k;
}
if(isPowerOfTwo(k))
{
vector<int> answer(n, 0);
answer[0] = k-1;
answer[1] = 1;
}
vector<int> answer(n);
int digitsInBin = numberOfBits(k);
int firstNumber = makeAllSetBits(digitsInBin-1);
int secondNumber = k - firstNumber;
answer[0] = firstNumber;
answer[1] = secondNumber;
return answer;
}
int main()
{
int t;
cin >> t;
while(t--)
{
int n, k;
cin >> n >> k;
vector<int> nums = maximizeSetBits(n, k);
for(int num: nums)
{
cout << num << " ";
}
cout << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBpc1Bvd2VyT2ZUd28oaW50IG51bSkgCnsKICAgIGlmIChudW0gPD0gMCkgcmV0dXJuIGZhbHNlOwogICAgCiAgICByZXR1cm4gKG51bSAmIChudW0gLSAxKSkgPT0gMDsKfQoKYm9vbCBpc0FsbFNldChpbnQgbnVtKQp7CglpZihpc1Bvd2VyT2ZUd28obnVtKzEpKQoJewoJCXJldHVybiB0cnVlOwoJfQoJcmV0dXJuIGZhbHNlOwp9CgppbnQgbnVtYmVyT2ZCaXRzKGludCBudW0pCnsKCWludCBjb3VudCA9IDA7Cgl3aGlsZShudW0pCgl7CgkJbnVtID4+PSAxOwoJCWNvdW50Kys7Cgl9CglyZXR1cm4gY291bnQ7Cn0KCmludCBiaW5hcnlUb0RlY2ltYWwoc3RyaW5nJiBiaW5hcnlTdHIpIAp7CiAgICBpbnQgZGVjaW1hbCA9IDA7CiAgICBpbnQgbGVuZ3RoID0gYmluYXJ5U3RyLmxlbmd0aCgpOwogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSAKICAgIHsKICAgICAgICBpZiAoYmluYXJ5U3RyW2ldID09ICcxJykgCiAgICAgICAgewogICAgICAgICAgICBkZWNpbWFsICs9IHBvdygyLCAobGVuZ3RoIC0gaSAtIDEpKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGRlY2ltYWw7Cn0KCmludCBtYWtlQWxsU2V0Qml0cyhpbnQgbikKewoJc3RyaW5nIHMgPSAiIjsKCWZvcihpbnQgaT0wOyBpPG47IGkrKykKCXsKCQlzKz0nMSc7Cgl9CglyZXR1cm4gYmluYXJ5VG9EZWNpbWFsKHMpOwp9Cgp2ZWN0b3I8aW50PiBtYXhpbWl6ZVNldEJpdHMoaW50IG4sIGludCBrKQp7CglpZihuPT0xKQoJewoJCXJldHVybiB7a307Cgl9CgkKCWlmKG49PTIpCgl7CgkJcmV0dXJuIHtrLCAwfTsKCX0KCQoJaWYoaXNBbGxTZXQoaykpCgl7CgkJdmVjdG9yPGludD4gYW5zd2VyKG4sIDApOwoJCWFuc3dlclswXSA9IGs7Cgl9CgkKCWlmKGlzUG93ZXJPZlR3byhrKSkKCXsKCQl2ZWN0b3I8aW50PiBhbnN3ZXIobiwgMCk7CgkJYW5zd2VyWzBdID0gay0xOwoJCWFuc3dlclsxXSA9IDE7Cgl9CgkKCXZlY3RvcjxpbnQ+IGFuc3dlcihuKTsKCWludCBkaWdpdHNJbkJpbiA9IG51bWJlck9mQml0cyhrKTsKCWludCBmaXJzdE51bWJlciA9IG1ha2VBbGxTZXRCaXRzKGRpZ2l0c0luQmluLTEpOwoJaW50IHNlY29uZE51bWJlciA9IGsgLSBmaXJzdE51bWJlcjsKCWFuc3dlclswXSA9IGZpcnN0TnVtYmVyOwoJYW5zd2VyWzFdID0gc2Vjb25kTnVtYmVyOwoJcmV0dXJuIGFuc3dlcjsKCQp9CgppbnQgbWFpbigpCnsKCWludCB0OwoJY2luID4+IHQ7Cgl3aGlsZSh0LS0pCgl7CgkJaW50IG4sIGs7CgkJY2luID4+IG4gPj4gazsKCQl2ZWN0b3I8aW50PiBudW1zID0gbWF4aW1pemVTZXRCaXRzKG4sIGspOwoJCWZvcihpbnQgbnVtOiBudW1zKQoJCXsKCQkJY291dCA8PCBudW0gPDwgIiAiOwoJCX0KCQljb3V0IDw8IGVuZGw7Cgl9CglyZXR1cm4gMDsKfQ==