#include <bits/stdc++.h>
using namespace std;
const int N = 5007, inf = 0x3f3f3f3f;
int men[N], mai[N];
int p[N];
void solve(int u, int d, int n) {
  assert(d >= men[n] and d <= mai[n]);
  if (n <= 1) return;
  d -= n - 1;
  for (int j = 0; j <= n - 1; ++j) {
    int men2 = men[j] + men[n - 1 - j];
    int mai2 = mai[j] + mai[n - 1 - j];
    if (d >= men2 and d <= mai2) {
      int v = u + 1;
      int d1 = min(mai[j], d - men[n - 1 - j]);
      int d2 = d - d1;
      p[v] = u;
      solve(v, d1, j);
      v = u + 1 + j;
      p[v] = u;
      solve(v, d2, n - 1 - j);
      return;
    }
  }
  assert(0);
}
int main() {
  int t;
  cin >> t;
  int d = -1;
  for (int i = 1; i <= 5000; ++i) {
    if (__builtin_popcount(i) == 1) d++;
    men[i] = men[i - 1] + d;
    mai[i] = mai[i - 1] + (i - 1);
  }
  while (t--) {
    int n, d;
    cin >> n >> d;
    if (d < men[n] or d > mai[n]) {
      cout << "NO\n";
    } else {
      cout << "YES\n";
      solve(1, d, n);
      for (int i = 2; i <= n; ++i) cout << p[i] << ' ';
      cout << '\n';
    }
  }
}
