import java.util.Scanner;
public class Main {
static int maxn=100003;
static int tt,x,n,m,ans;
static int[]f;
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int tt=scanner.nextInt();
while(tt>0) {
f=new int[maxn];
tt--;
ans=0;
n=scanner.nextInt();
m=scanner.nextInt();
int nn=0;
for (int i = 1; i <=n; i++) {
x=scanner.nextInt();
int w=f[x]+1;
for (int j = Math.max(1, x-m); j <=Math.min(maxn-1, x+m); j++) {
f[j]=Math.max(f[j], w);
nn++;
}
}
for (int i = 1; i < nn; i++) {
ans=Math.max(ans, f[i]);
}
System.out.println(ans);
}
}
}
AC
import java.util.Scanner;
public class Main {
static int n,d;
static int a[];
static int dp[];
static int mm[];
public static int fn(int x){
int ans=0;
for (int i = Math.max(a[x]-d,0); i <=Math.min(a[x]+d,100000) ; i++) {
ans=Math.max(ans,mm[i]);
}
return ans;
}
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int t=scanner.nextInt();
while (t>0){
a=new int[300005];
dp=new int[300005];
mm=new int[200005];
t--;
n=scanner.nextInt();
d=scanner.nextInt();
for (int i = 1; i <=n ; i++) {
a[i]=scanner.nextInt();
}
for (int i = 1; i <=n ; i++) {
dp[i]=fn(i)+1;
mm[a[i]]=dp[i];
}
int ans=0;
for (int i = 1; i <=n ; i++) {
ans=Math.max(ans,dp[i]);
}
System.out.println(ans);
}
}
}