#include using namespace std; typedef long long ll; bool wrong = false; int small(int n){ if(n <= 1) return 0; int l = n/2; int r = n-1-l; return (n-1) + small(l) + small(r); } ll large(ll n){ return n * (n-1) / 2; } vector solve(int n, int c){ if(large(n) < c){ wrong = true; return {}; } if(n == 0) return {}; c -= (n-1); // cout << n << ' ' << c << '\n'; vector result; for(int i = 0; i <= n/2; ++i){ if(i+1 <= n/2 && large(i+1) + large(n-2-i) >= c){ // cout << i << ' ' << small(i+1) << ' ' << small(n-2-i) << ' ' << "later is fine\n"; continue; } result.push_back(i+1); vector l = solve(i,large(i)); vector r = solve(n-i-1,c-large(i)); result.insert(result.end(),l.begin(),l.end()); for(int &v : r) v += i+1; result.insert(result.end(),r.begin(),r.end()); return result; } wrong = true; return {}; } void print(vector arr){ for(int i = 0; i < arr.size(); ++i) printf("%d%c",arr[i]," \n"[i==arr.size()-1]); } int main(){ int t; cin >> t; while(t--){ wrong = false; int len,c; cin >> len >> c; vector ans = solve(len,c); if(wrong) puts("-1"); else print(ans); } }