#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll; typedef unsigned long long ull; //#pragma comment(linker, "/STACK:1024000000,1024000000") //#pragma comment(linker, "/STACK:36777216") //hdu 扩栈 #define mm(a) memset(a,0,sizeof(a)) #define lr rt<<1 #define rr rt<<1|1 #define sync std::ios::sync_with_stdio(false);std::cin.tie(0); #define inf 0x3f3f3f3f #define eqs 1e-8 #define lb(x) (x&(-x)) #define ch(a) (int(a-'a')+1) #define rep(i, a, b) for(int i=a;i<=b;i++) #define mkp(a, b) make_pair(a,b) #define re register #define umap(a) (a).reserve(1024);(a).max_load_factor(0.25); using namespace std; typedef pair pii; typedef pair pll; typedef pair piii; //const double pi=acos(-1); const int maxn=500005; //const ll Mod=1000000007; const ll Mod=998244353; unordered_mapmp; ll a[maxn]; int main() { int t; scanf("%d",&t); int n; ll k; while(t--) { mp.clear(); mp.reserve(1024); mp.max_load_factor(0.25); scanf("%d%lld",&n,&k); for(int i=1;i<=n;i++) scanf("%lld",&a[i]); sort(a+1,a+n+1); ll lmt=-2e18; ll L,R; int ans=0; for(int i=1;i<=n;i++) { L=a[i]-k; R=a[i]+k; if(lmt>=R) continue; lmt=max(L,lmt+1ll); ans++; } printf("%d\n",ans); } return 0; }