#include using namespace std; const long long maxn = 1e5; long long mn[maxn+1], mx[maxn+1]; long long a[maxn]; void solve(long long k, long long n, long long m){ if(n == 0) return; //cerr << "solve " << k << " " << n << " " << m << endl; m -= n-1; long long l = 0, r = (n-1)/2; while(l != r){ long long t = (l+r)/2; if(mn[t] + mn[n-1-t] <= m) r = t; else l = t+1; } a[k] = l+1; solve(k+1, l, mn[l]); solve(k+1+l, n-1-l, m-mn[l]); for(long long i = k+1+l; i < k+n; i++) a[i] += l+1; } int main(){ ios::sync_with_stdio(0); cin.tie(0); for(long long i = 2; i <= maxn; i++){ long long r = i-1; mn[i] = r + mn[r/2] + mn[(r+1)/2]; mx[i] = r + mx[i-1]; } long long q; cin >> q; while(q--){ long long n, m; cin >> n >> m; if(m >= mn[n] && m <= mx[n]){ solve(0, n, m); for(long long i = 0; i < n; i++) cout << a[i] << " "; cout << "\n"; } else cout << -1; } return 0; }