#include <bits/stdc++.h>
using namespace std;
inline int read() {
  register int x = 0, f = 1;
  register char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') x = x * 10 + (ch ^ 48), ch = getchar();
  return x * f;
}
const int N = 5e3 + 5;
int du[N], fa[N], dep[N];
struct each {
  queue<int> que;
  int find(int ty, int d) {
    while (!que.empty()) {
      int x = que.front();
      if (du[x] != ty || dep[x] != d)
        que.pop();
      else
        return x;
    }
    return 0;
  }
  void clear() {
    while (!que.empty()) que.pop();
  }
  void push(int x) { que.push(x); }
  void pop() { que.pop(); }
} b[N][2];
void run(int d, int &t) {
  if (!d || !t) return;
  while (t) {
    int x = b[d][0].find(0, d);
    int y = b[d][1].find(1, d);
    if (!x) {
      run(d - 1, t);
      return;
    }
    if (!y) {
      int k = b[d][0].find(0, d);
      while (k == x) b[d][0].pop(), k = b[d][0].find(0, d);
      if (!k) {
        b[d][0].push(x);
        return void(run(d - 1, t));
      }
      b[d + 1][0].push(x), dep[x] = d + 1;
      --du[fa[x]], b[d - 1][du[fa[x]]].push(fa[x]);
      --t, b[d][0].pop(), du[fa[x] = k] = 1, b[d][1].push(k);
    } else {
      b[d + 1][0].push(x), dep[x] = d + 1;
      --du[fa[x]], b[d - 1][du[fa[x]]].push(fa[x]);
      --t, b[d][0].pop(), b[d][1].pop(), du[fa[x] = y] = 2;
    }
    run(d + 1, t);
  }
}
int main() {
  int t = read();
  while (t--) {
    int tot = 0, n = read(), d = read();
    for (int i = 2; i <= n; i++) fa[i] = i >> 1, ++du[fa[i]];
    for (int i = 2; i <= n; i++) {
      dep[i] = dep[fa[i]] + 1, tot += dep[i];
      if (du[i] != 2) b[dep[i]][du[i]].push(i);
    }
    if (d < tot || d > n * (n - 1) / 2)
      puts("NO");
    else {
      run(dep[n], d -= tot), puts("YES");
      for (int i = 2; i <= n; i++) printf("%d ", fa[i]);
      putchar('\n');
    }
    for (int i = 1; i <= n; i++) du[i] = dep[i] = 0;
    for (int i = 1; i <= n; i++) b[i][0].clear(), b[i][1].clear();
  }
  return 0;
}
