#include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef vector vll; typedef pair pll; const ll oo = 0x3f3f3f3f3f3f3f3f; const double eps = 1e-9; #define FOR(i,a,b) for (ll i = (a); i < (b); i++) #define FORD(i,a,b) for (ll i = ll(b)-1; i >= (a); i--) #define sz(c) ll((c).size()) #define all(c) (c).begin(), (c).end() #define pb push_back #define xx first #define yy second #define DBG(X) ({ if(1) cerr << "DBGDO: " << (#X) << " = " << (X) << endl; }) vector mm(100002); void fill_mm(){ mm[0] = {0, 0}; mm[1] = {0, 0}; FOR(i, 2, sz(mm)){ mm[i] = {i-1 + mm[(i-1)/2].xx + mm[i/2].xx, i-1 + mm[i-1].yy}; } } void rek(ll l, ll c, ll of){ if(l == 0){ //cout << of << " "; return; } c -= (l-1); FOR(i, 0, l){ ll leftside = i; ll rightside = l - i - 1; if(mm[leftside].xx + mm[rightside].xx <= c && c <= mm[leftside].yy + mm[rightside].yy){ cout << i + of << " "; ll lm = mm[leftside].xx; if(c - lm > mm[rightside].yy){ lm = c - mm[rightside].yy; } /* DBG(i); DBG(c); DBG(lm); assert(mm[leftside].xx <= lm && lm <= mm[leftside].yy); assert(mm[rightside].xx <= c - lm && c - lm <= mm[rightside].yy); */ rek(leftside, lm, of); rek(rightside, c - lm, i+of+1); return; } } assert(false); } int main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); fill_mm(); /* FOR(i, 0, 20){ cerr << mm[i].xx << " " << mm[i].yy << endl; } */ ll q; cin >> q; FOR(i, 0, q){ ll len, c; cin >> len >> c; if(c < mm[len].xx || c > mm[len].yy){ cout << -1 << endl; continue; } rek(len, c, 1); cout << endl; } return 0; }