#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#define ll long long int
#define ld long double
using namespace std;
using namespace __gnu_pbds;
#define FAST ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
typedef tree<ll, null_type, less_equal<ll>, rb_tree_tag,tree_order_statistics_node_update> ordered_multiset;
const ll N = 1e6 + 5, MOD1 = 998244353, MOD2 = 1e9 + 7;
void solve(int t) {
ll n, k;
cin >> n >> k;
vector<ll> ans(n + 1, -1);
if (k & 1) {
return void(cout << "No");
}
ll l = 1, r = n;
while (l <= r) {
if (k >= (r - l) * 2) {
k -= (r - l) * 2;
ans[l] = r;
ans[r] = l;
r--;
l++;
} else {
if (k & 1) {
return void(cout << "No");
} else {
ans[l] = l + k / 2;
ans[l + k / 2] = l;
k = 0;
break;
}
}
}
if (k > 0) {
return void(cout << "No");
}
cout << "Yes\n";
for (int i = 1; i <= n; i++) {
cout << (ans[i] == -1 ? i : ans[i]);
if (i <= n - 1) cout << " ";
}
}
signed main() {
FAST
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int t = 1;
cin>>t;
for (ll i = 1; i <= t; i++) {
solve(i);
if (i < t) cout << "\n";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2luY2x1ZGU8ZXh0L3BiX2RzL2Fzc29jX2NvbnRhaW5lci5ocHA+CiNpbmNsdWRlPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiNkZWZpbmUgbGwgbG9uZyBsb25nIGludAojZGVmaW5lIGxkIGxvbmcgZG91YmxlCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwojZGVmaW5lIEZBU1QgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSksIGNpbi50aWUobnVsbHB0ciksIGNvdXQudGllKG51bGxwdHIpOwp0eXBlZGVmIHRyZWU8bGwsIG51bGxfdHlwZSwgbGVzc19lcXVhbDxsbD4sIHJiX3RyZWVfdGFnLHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gb3JkZXJlZF9tdWx0aXNldDsKY29uc3QgbGwgTiA9IDFlNiArIDUsIE1PRDEgPSA5OTgyNDQzNTMsIE1PRDIgPSAxZTkgKyA3OwoKdm9pZCBzb2x2ZShpbnQgdCkgewogICAgbGwgbiwgazsKICAgIGNpbiA+PiBuID4+IGs7CiAgICB2ZWN0b3I8bGw+IGFucyhuICsgMSwgLTEpOwogICAgaWYgKGsgJiAxKSB7CiAgICAgICAgcmV0dXJuIHZvaWQoY291dCA8PCAiTm8iKTsKICAgIH0KICAgIGxsIGwgPSAxLCByID0gbjsKICAgIHdoaWxlIChsIDw9IHIpIHsKICAgICAgICBpZiAoayA+PSAociAtIGwpICogMikgewogICAgICAgICAgICBrIC09IChyIC0gbCkgKiAyOwogICAgICAgICAgICBhbnNbbF0gPSByOwogICAgICAgICAgICBhbnNbcl0gPSBsOwogICAgICAgICAgICByLS07CiAgICAgICAgICAgIGwrKzsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiAoayAmIDEpIHsKICAgICAgICAgICAgICAgIHJldHVybiB2b2lkKGNvdXQgPDwgIk5vIik7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBhbnNbbF0gPSBsICsgayAvIDI7CiAgICAgICAgICAgICAgICBhbnNbbCArIGsgLyAyXSA9IGw7CiAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgaWYgKGsgPiAwKSB7CiAgICAgICAgcmV0dXJuIHZvaWQoY291dCA8PCAiTm8iKTsKICAgIH0KICAgIGNvdXQgPDwgIlllc1xuIjsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNvdXQgPDwgKGFuc1tpXSA9PSAtMSA/IGkgOiBhbnNbaV0pOwogICAgICAgIGlmIChpIDw9IG4gLSAxKSBjb3V0IDw8ICIgIjsKICAgIH0KfQoKc2lnbmVkIG1haW4oKSB7CiAgICBGQVNUCiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKTsKICAgIGZyZW9wZW4oIm91dHB1dC50eHQiLCAidyIsIHN0ZG91dCk7CiNlbmRpZgogICAgaW50IHQgPSAxOwogICAgY2luPj50OwogICAgZm9yIChsbCBpID0gMTsgaSA8PSB0OyBpKyspIHsKICAgICAgICBzb2x2ZShpKTsKICAgICAgICBpZiAoaSA8IHQpIGNvdXQgPDwgIlxuIjsKICAgIH0KfQ==