#!/usr/bin/python3 import sys, math, os #import re, string, fractions, itertools #import bisect, heapq #from fractions import Fraction #from functools import reduce LocaL = "MATE_DESKTOP_SESSION_ID" in os.environ def mle_assert(x): if LocaL: assert x elif not x: x = list(range(10**8)) def tle_assert(x): if LocaL: assert x elif not x: for i in range(10000): for j in range(1000): for k in range(1000): pass sys.setrecursionlimit(10000) #Z = 10**9 + 7 ssr = sys.stdin.readline ssw = sys.stdout.write ssf = sys.stdout.flush sew = sys.stderr.write def rdline(): return ssr().strip() def rdstrs(): return ssr().split() def rdints(): return list(map(int, ssr().split())) def rd1int(): return int(rdline()) def do_one_case(cnum): N,K = rdints() A = rdints() assert len(A)==N B = [ (a,i) for (i,a) in enumerate(A) ] B.sort(reverse=True) j = -1 C = [] for i in range(N): while B[j+1][0]-K >= B[i][0]: j += 1 if j<0: c = 1 else: c = max(C[i-1][1], 1+C[j][1]) C.append((B[i][0], c, B[i][1])) C = C[::-1] j = -1 k = 0 D = [] for i in range(N): while C[j+1][0]+K <= C[i][0]: j += 1 while k=0: e += D[j][1] if k