package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
dp := make([][]bool, 31)
parent := make([][]int, 31)
for i := range dp {
dp[i] = make([]bool, 436)
parent[i] = make([]int, 436)
}
dp[0][0] = true
for i := 1; i <= 30; i++ {
for j := 0; j <= 435; j++ {
for L := 1; L <= i; L++ {
cost := L * (L - 1) / 2
if j >= cost && dp[i-L][j-cost] {
dp[i][j] = true
parent[i][j] = L
break
}
}
}
}
var t int
fmt.Fscan(reader, &t)
for tc := 0; tc < t; tc++ {
var n, k int
fmt.Fscan(reader, &n, &k)
S := n*(n-1)/2 - k
if S < 0 || S > 435 || !dp[n][S] {
fmt.Fprintln(writer, 0)
continue
}
currN := n
currS := S
var lengths []int
for currN > 0 {
L := parent[currN][currS]
lengths = append(lengths, L)
currN -= L
currS -= L * (L - 1) / 2
}
var ans []int
currMax := n
for _, L := range lengths {
for i := 0; i < L; i++ {
ans = append(ans, currMax-L+1+i)
}
currMax -= L
}
for i, val := range ans {
if i > 0 {
fmt.Fprint(writer, " ")
}
fmt.Fprint(writer, val)
}
fmt.Fprintln(writer)
}
}