#include #include #include #include #include #define setIO(x) freopen(x".in", "r", stdin), freopen(x".out", "w", stdout) #define closefile fclose(stdin), fclose(stdout) #define m_p make_pair #define sz(x) (int)x.size() #define see(x) cerr << x << " " #define seeln(x) cerr << x << endl #define out(x) cerr << #x << " = " << x << " " #define outln(x) cerr << #x << " = " << x << endl #define outarr(x, l, r) {cerr << #x"[" << l << " ~ " << r << "] = "; for (int _i = l; _i <= r; ++_i) cerr << x[_i] << " "; cerr << endl;} using namespace std; typedef long long ll; typedef pair pii; template bool checkmax(T &a, T b){return a < b ? a = b, 1 : 0;} template bool checkmin(T &a, T b){return b < a ? a = b, 1 : 0;} const int N = 100005; int n, k; ll a[N]; void init() { scanf("%d%d", &n, &k); for (int i = 1; i <= n; ++i) scanf("%lld", &a[i]); sort(a + 1, a + n + 1); } void solve() { ll v = -1000000000, ans = 0; for (int i = 1; i <= n; ) { int j = i; while (j < n && a[j + 1] == a[i]) ++j; ll lft = max(v, a[i]); ll len = j - i + 1; if (lft <= a[i] + k + k) { ll t = min(a[i] + k + k - lft + 1, len); v = lft + t; ans += t; } i = j + 1; } printf("%lld\n", ans); } int main() { int t; scanf("%d", &t); while (t--) { init(); solve(); } return 0; }