Rt,
#include <cstdio>
#include <cstring>
using namespace std ;
const int MAXN = 5e3 + 10 ;
int T , n , d , t[MAXN] , dep[MAXN] ;
struct node {
int lc , rc , fa ;
node () {lc = rc = fa = 0 ;}
} a[MAXN] ;
int main () {
scanf ("%d" , &T) ;
while (T--) {
scanf ("%d%d" , &n , &d) ;
memset (a , 0 , sizeof (a)) ;
for (int i = 1 ; i <= n ; i++) t[i] = dep[i] = 0 ;
int mx = n * (n - 1) / 2 , mn = 0 , nw = 1 ;
t[0] = 1 ;
for (int i = 2 ; i <= n ; i++) {
if (t[nw] < 2 * t[nw - 1]) mn += nw , t[nw]++ ;
else nw++ , mn += nw , t[nw]++ ;
}
if (d > mx || d < mn) {
puts ("NO") ;
continue ;
}
//printf ("*%d %d\n" , mx , mn) ;
puts ("YES") ;
for (int i = 1 ; i <= n ; i++)
a[i].lc = (i < n) * (i + 1) , a[i].fa = i - 1 , dep[i] = i - 1 ;
nw = mx ;
for (int i = n ; i > 1 ; i--) {
if (nw > d) {
if (a[a[i].fa].lc == i) a[a[i].fa].lc = 0 ;
else a[a[i].fa].rc = 0 ;
//printf ("%d %d\n" , nw , d) ;
int tmp = nw - d ;
if (tmp < dep[i]) {
int mnd = n , p = 0 ;
// for (int j = 1 ; j <= n ; j++) printf ("%d " , dep[j]) ;
// puts ("") ;
for (int j = 1 ; j <= n ; j++) {
//if (j == 11) printf ("*%d %d:%d %d %d %d\n" , dep[i] - dep[j] - 1 , tmp , dep[j] , mnd , a[j].lc , a[j].rc) ;
if (j != i && dep[i] - dep[j] - 1 <= tmp && dep[j] < mnd && (!a[j].lc || !a[j].rc))
mnd = dep[j] , p = j ;
}
nw -= dep[i] - dep[p] - 1 ; dep[i] = mnd + 1 ; a[i].fa = p ;
//printf ("%d->%d\n" , p , i) ;
if (!a[p].lc) a[p].lc = i ;
else a[p].rc = i ;
}
else {
for (int j = 1 , k = n ; j < k ;) {
//printf ("**%d-%d:%d %d\n" , j , k , dep[j] , dep[k]) ;
if (dep[j] <= dep[k] && j != i && (!a[j].lc || !a[j].rc)) {
//printf ("*") ;
if (!a[j].lc) {
a[i].fa = j , a[j].lc = i ; nw -= dep[i] - dep[j] - 1 ;
dep[i] = dep[j] + 1 ;
break ;
}
if (!a[j].rc) {
a[i].fa = j , a[j].rc = i ; nw -= dep[i] - dep[j] - 1 ;
dep[i] = dep[j] + 1 ; //printf ("%d->%d\n" , j , i) ;
break ;
}
j++ ;
}
else if (k != i && (!a[k].lc || !a[k].rc)) {
if (!a[k].lc) {
a[i].fa = k , a[k].lc = i ; nw -= dep[i] - dep[k] - 1 ;
dep[i] = dep[k] + 1 ; //printf ("%d->%d\n" , k , i) ;
break ;
}
if (!a[k].rc) {
a[i].fa = k , a[k].rc = i ; nw -= dep[i] - dep[k] - 1 ;
dep[i] = dep[k] + 1 ; //printf ("%d->%d\n" , k , i) ;
break ;
}
k-- ;
}
else j++ , k-- ;
}
}
}
else break ;
}
for (int i = 2 ; i <= n ; i++) printf ("%d " , a[i].fa) ;
puts ("") ;
}
return 0 ;
}
/*
1
668 4999
*/