#include <bits/stdc++.h>
using namespace std;
using int64 = long long;
const long long INF64 = (long long)4e18;
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int T;
if(!(cin >> T)) return 0;
while(T--){
int64 N, K;
cin >> N >> K;
// Helper: given start x = A1, can we achieve total sum >= K using greedy r_i <= A_i-1 ?
auto can = [&](int64 x)->bool{
long long rem = K;
long long Ai = x;
for(int i = 1; i <= N-1; ++i){
long long cap = Ai - 1;
if(cap < 0) cap = 0;
long long take = min(rem, cap);
rem -= take;
// Ai+1 = Ai + take
// cap Ai can grow large; cap values and Ai may overflow, cap to INF64
if(i != N-1){ // only update Ai when needed for next iteration
Ai = Ai + take;
if(Ai > INF64/2) Ai = INF64; // cap to avoid overflow
}
if(rem == 0) return true;
}
return rem == 0;
};
// Binary search minimal A1 >= 1 such that can(A1) == true
int64 lo = 1, hi = (long long)2e18; // hi big enough
while(lo < hi){
int64 mid = lo + (hi - lo) / 2;
if(can(mid)) hi = mid;
else lo = mid + 1;
}
int64 A1 = lo;
// Build actual sequence using greedy fill (r_i = min(rem, A_i - 1))
vector<long long> A(N);
A[0] = A1;
long long rem = K;
for(int i = 0; i < N-1; ++i){
long long cap = A[i] - 1;
if(cap < 0) cap = 0;
long long r = min(rem, cap);
A[i+1] = A[i] + r;
rem -= r;
}
// rem must be 0
for(int i = 0; i < N; ++i){
if(i) cout << ' ';
cout << A[i];
}
cout << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGludDY0ID0gbG9uZyBsb25nOwpjb25zdCBsb25nIGxvbmcgSU5GNjQgPSAobG9uZyBsb25nKTRlMTg7CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShudWxscHRyKTsKICAgIGludCBUOwogICAgaWYoIShjaW4gPj4gVCkpIHJldHVybiAwOwogICAgd2hpbGUoVC0tKXsKICAgICAgICBpbnQ2NCBOLCBLOwogICAgICAgIGNpbiA+PiBOID4+IEs7CgogICAgICAgIC8vIEhlbHBlcjogZ2l2ZW4gc3RhcnQgeCA9IEExLCBjYW4gd2UgYWNoaWV2ZSB0b3RhbCBzdW0gPj0gSyB1c2luZyBncmVlZHkgcl9pIDw9IEFfaS0xID8KICAgICAgICBhdXRvIGNhbiA9IFsmXShpbnQ2NCB4KS0+Ym9vbHsKICAgICAgICAgICAgbG9uZyBsb25nIHJlbSA9IEs7CiAgICAgICAgICAgIGxvbmcgbG9uZyBBaSA9IHg7CiAgICAgICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gTi0xOyArK2kpewogICAgICAgICAgICAgICAgbG9uZyBsb25nIGNhcCA9IEFpIC0gMTsKICAgICAgICAgICAgICAgIGlmKGNhcCA8IDApIGNhcCA9IDA7CiAgICAgICAgICAgICAgICBsb25nIGxvbmcgdGFrZSA9IG1pbihyZW0sIGNhcCk7CiAgICAgICAgICAgICAgICByZW0gLT0gdGFrZTsKICAgICAgICAgICAgICAgIC8vIEFpKzEgPSBBaSArIHRha2UKICAgICAgICAgICAgICAgIC8vIGNhcCBBaSBjYW4gZ3JvdyBsYXJnZTsgY2FwIHZhbHVlcyBhbmQgQWkgbWF5IG92ZXJmbG93LCBjYXAgdG8gSU5GNjQKICAgICAgICAgICAgICAgIGlmKGkgIT0gTi0xKXsgLy8gb25seSB1cGRhdGUgQWkgd2hlbiBuZWVkZWQgZm9yIG5leHQgaXRlcmF0aW9uCiAgICAgICAgICAgICAgICAgICAgQWkgPSBBaSArIHRha2U7CiAgICAgICAgICAgICAgICAgICAgaWYoQWkgPiBJTkY2NC8yKSBBaSA9IElORjY0OyAvLyBjYXAgdG8gYXZvaWQgb3ZlcmZsb3cKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmKHJlbSA9PSAwKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gcmVtID09IDA7CiAgICAgICAgfTsKCiAgICAgICAgLy8gQmluYXJ5IHNlYXJjaCBtaW5pbWFsIEExID49IDEgc3VjaCB0aGF0IGNhbihBMSkgPT0gdHJ1ZQogICAgICAgIGludDY0IGxvID0gMSwgaGkgPSAobG9uZyBsb25nKTJlMTg7IC8vIGhpIGJpZyBlbm91Z2gKICAgICAgICB3aGlsZShsbyA8IGhpKXsKICAgICAgICAgICAgaW50NjQgbWlkID0gbG8gKyAoaGkgLSBsbykgLyAyOwogICAgICAgICAgICBpZihjYW4obWlkKSkgaGkgPSBtaWQ7CiAgICAgICAgICAgIGVsc2UgbG8gPSBtaWQgKyAxOwogICAgICAgIH0KICAgICAgICBpbnQ2NCBBMSA9IGxvOwoKICAgICAgICAvLyBCdWlsZCBhY3R1YWwgc2VxdWVuY2UgdXNpbmcgZ3JlZWR5IGZpbGwgKHJfaSA9IG1pbihyZW0sIEFfaSAtIDEpKQogICAgICAgIHZlY3Rvcjxsb25nIGxvbmc+IEEoTik7CiAgICAgICAgQVswXSA9IEExOwogICAgICAgIGxvbmcgbG9uZyByZW0gPSBLOwogICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBOLTE7ICsraSl7CiAgICAgICAgICAgIGxvbmcgbG9uZyBjYXAgPSBBW2ldIC0gMTsKICAgICAgICAgICAgaWYoY2FwIDwgMCkgY2FwID0gMDsKICAgICAgICAgICAgbG9uZyBsb25nIHIgPSBtaW4ocmVtLCBjYXApOwogICAgICAgICAgICBBW2krMV0gPSBBW2ldICsgcjsKICAgICAgICAgICAgcmVtIC09IHI7CiAgICAgICAgfQogICAgICAgIC8vIHJlbSBtdXN0IGJlIDAKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgTjsgKytpKXsKICAgICAgICAgICAgaWYoaSkgY291dCA8PCAnICc7CiAgICAgICAgICAgIGNvdXQgPDwgQVtpXTsKICAgICAgICB9CiAgICAgICAgY291dCA8PCAnXG4nOwogICAgfQogICAgcmV0dXJuIDA7Cn0=