#include <bits/stdc++.h>
using namespace std;
pair<int, int> h[105][105 * 107 / 2];
int q, N[666666], K[666666];
vector<int> aa[666666];
vector<int> qry[105][105 * 107 / 2];
vector<int> ch[666666];
int an = 0, ty[666666];
vector<int> op;
void dfs(int w, int d = 0) {
  if (!ch[w].size()) {
    op.push_back(w);
    return;
  }
  if (ty[w] == 1) {
    vector<int> sb;
    int s = ch[w].size();
    for (int t = 1; t < s; t += 2) sb.push_back(ch[w][t]);
    sb.push_back(ch[w][0]);
    for (int t = (s - 1) - ((s - 1) & 1); t > 0; t -= 2) sb.push_back(ch[w][t]);
    for (auto r : sb) dfs(r, d ^ 1);
  } else {
    vector<int> sb;
    for (auto r : ch[w]) sb.push_back(r);
    if (d) reverse(sb.begin(), sb.end());
    for (auto r : sb) dfs(r, d ^ 1);
  }
}
vector<int> cons(int n, int p) {
  an = n;
  vector<int> st;
  for (int i = 1; i <= n; ++i) ty[i] = 0, ch[i].clear(), st.push_back(i);
  int X = 1, Y = p;
  while (X != n) {
    pair<int, int> g = h[X][Y];
    assert(g.first != -1);
    int y = g.second % 2;
    g.second /= 2;
    int c = g.first - X + 1;
    tie(X, Y) = g;
    ++an;
    ty[an] = y;
    ch[an].clear();
    for (int j = 1; j <= c; ++j) ch[an].push_back(st.back()), st.pop_back();
    reverse(ch[an].begin(), ch[an].end());
    st.push_back(an);
  }
  assert(Y == n && st.size() == 1);
  op.clear();
  dfs(an);
  return op;
}
int main() {
  scanf("%d", &q);
  for (int i = 1; i <= q; ++i)
    scanf("%d%d", N + i, K + i), qry[N[i]][K[i]].push_back(i);
  for (int n = 1; n <= 100; ++n) {
    memset(h, -1, sizeof h);
    h[n][n] = pair<int, int>(0, 0);
    for (int i = n; i >= 1; --i) {
      for (int j = n * (n + 1) / 2; j >= 0; --j)
        if (~h[i][j].first) {
          for (int c = 2; c <= i; ++c) {
            h[i - c + 1][j + c * (c - 1) / 2] = pair<int, int>(i, j * 2);
            if (c >= 4) h[i - c + 1][j + 1] = pair<int, int>(i, j * 2 + 1);
          }
        }
    }
    for (int j = n * (n + 1) / 2; j >= 0; --j)
      if (h[1][j].first != -1 && qry[n][j].size()) {
        auto u = cons(n, j);
        for (auto r : qry[n][j]) aa[r] = u;
      }
  }
  for (int i = 1; i <= q; ++i)
    if (aa[i].size()) {
      puts("YES");
      for (auto x : aa[i]) printf("%d ", x);
      puts("");
    } else
      puts("NO");
}
