#!/bin/python from pprint import pprint import sys countsSaved = dict() splits = dict() def counts(l): if l in countsSaved: return countsSaved[l] if l <= 1: countsSaved[l] = set([0]) return countsSaved[l] if l == 2: countsSaved[l] = set([1]) return countsSaved[l] countsSaved[l] = set() for i in range(0, l): s1, s2 = i-1, l-i-1 A = counts(i-1) B = counts(l-i-1) for a in A: for b in B: x = a+b+l-1 if x not in countsSaved[l]: countsSaved[l].add(x) splits[(l,x)] = (s1,s2) return countsSaved def do(A, c): if c < 1: return l = len(A) s = max(splits[(l,c)]) A[0],A[s-1] = A[s-1],A[0] # print A, s # print A[0], A[1:s], A[s:] a = A[1:s] b = A[s:] l -= 1 c -= l savedA = countsSaved[len(a)] savedB = countsSaved[len(b)] for x in savedA: if c-x in savedB: # print "--", x, c-x break # print "a:", x, " ", "b:", c-x do(a, x) do(b, c-x) def solve(l, c): # print counts(4) r = counts(l) if (l,c) not in splits: return -1 # if c not in r: # return -1 splitList = [] A = range(1, l+1) do(A, c) return A # print solve(4,6) # print solve(3,2) # print solve(5,6) # exit(1) # pprint(splits) if __name__ == '__main__': q = int(raw_input().strip()) for a0 in xrange(q): l,c = raw_input().strip().split(' ') l,c = [int(l),int(c)] # your code goes here a = solve(l, c) if a == -1: print a else: for x in a: print x, print