#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long lcm(long long a, long long b) { return a * (b / gcd(a, b)); }
const int N = 100005;
void solve() {
  long long n, d;
  cin >> n >> d;
  long long lo = 0, hi = (n * (n - 1)) / 2;
  long long curr = -1;
  for (long long i = 1; i <= n; i++) {
    if (!(i & (i - 1))) curr++;
    lo += curr;
  }
  if (d < lo || d > hi) {
    cout << "NO" << '\n';
    return;
  }
  curr = hi;
  vector<long long> par(n);
  iota((par).begin(), (par).end(), -1);
  vector<long long> dep(n);
  iota((dep).begin(), (dep).end(), 0);
  vector<long long> bad(n);
  vector<long long> cnt(n, 1);
  cnt[n - 1] = 0;
  while (curr > d) {
    long long node = -1;
    for (long long i = 0; i <= n - 1; i++) {
      if (!bad[i] && cnt[i] == 0 && (node == -1 || (dep[i] < dep[node]))) {
        node = i;
      }
    }
    long long p = -1;
    for (long long i = 0; i <= n - 1; i++) {
      if (cnt[i] < 2 && dep[i] == (dep[node] - 2)) {
        p = i;
      }
    }
    if (p == -1) {
      bad[node] = 1;
      continue;
    }
    cnt[par[node]]--;
    par[node] = p;
    cnt[p]++;
    dep[node]--;
    curr--;
  }
  cout << "YES" << '\n';
  for (long long i = 1; i <= n - 1; i++) cout << par[i] + 1 << " ";
  cout << '\n';
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int TESTS = 1;
  cin >> TESTS;
  while (TESTS--) {
    solve();
  }
  return 0;
}
