#include #define pii pair #define fi first #define se second #define mp make_pair #define pb push_back #define pf push_front #define pb2 pop_back #define pf2 pop_front #define line printf("\n") #define pq priority_queue #define rep(k,i,j) for(int k = (int)i;k<(int)j;k++) #define repd(k,i,j) for(int k = (int)i;k>=(int)j;k--) #define ll long long using namespace std; double EPS = 1e-9; int INF = 1e9+7;; long long INFLL = 1e17; double pi = acos(-1); int dirx[8] = {-1,0,0,1,-1,-1,1,1}; int diry[8] = {0,1,-1,0,-1,1,-1,1}; inline void OPEN (string s) { freopen ((s + ".in").c_str (), "r", stdin); freopen ((s + ".out").c_str (), "w", stdout); } //end of template int q; int n,c; const int maxn= 1e5+5; pair dp[maxn]; int arr[maxn]; void bt(int x,int ki,int ka,int rem){ if(ki==ka){ arr[x] = ki; return; } if(ki>ka)return; int len = ka-ki+1; int l = 1,r = (len-1)/2; rep(mid,1,len){ if(dp[mid-1].se+dp[len-mid].se + len-1>=rem && dp[mid-1].fi+dp[len-mid].fi+len-1<=rem){ l = mid; break; } } //printf("%d %d %d\n",ki,ka,l); arr[x] = ki+l-1; rem-= len-1; if(dp[len-l].fi<= rem-dp[l-1].fi && rem-dp[l-1].fi<=dp[len-l].se){ bt(x+1,ki,ki+l-2,dp[l-1].fi); bt(x+l,ki+l,ka,rem-dp[l-1].fi); return; } if(dp[len-l].fi<= rem-dp[l-1].se && rem-dp[l-1].se<=dp[len-l].se){ bt(x+1,ki,ki+l-2,dp[l-1].se); bt(x+l,ki+l,ka,rem-dp[l-1].se); return; } if(dp[l-1].fi<= rem-dp[len-l].fi && rem-dp[len-l].fi<=dp[l-1].se){ bt(x+1,ki,ki+l-2,rem-dp[len-l].fi); bt(x+l,ki+l,ka,dp[len-l].fi); return; } if(dp[l-1].fi<= rem-dp[len-l].se && rem-dp[len-l].se<=dp[l-1].se){ bt(x+1,ki,ki+l-2,rem-dp[len-l].se); bt(x+l,ki+l,ka,dp[len-l].se); return; } } int bil[maxn]; int main(){ dp[1] = mp(0,0); rep(k,2,maxn){ dp[k].se = dp[k-1].se+k-1; dp[k].fi = dp[(k-1)/2].fi + dp[(k-1)-(k-1)/2].fi + k-1; } //rep(k,2,10)printf("%d %d\n",dp[k].fi,dp[k].se); cin>>q; while(q--){ cin>>n>>c; if(dp[n].fi<=c && c<=dp[n].se){ bt(1,1,n,c); rep(k,1,n+1)printf("%d ",arr[k]);line; } else{ printf("-1\n"); } } return 0; }