from __future__ import print_function import time import sys from math import pi sys.setrecursionlimit(10002) #INFILE = open('1.in') INFILE=sys.stdin def solve(n,k,nx): # if n==1: # return '1' mx=sorted((a,i) for i,a in enumerate(nx)) g1=[0]*n g2=[0]*n res=[0]*n p1=0 p2=1 while p2=0: while p2>=0 and mx[p2][0]>mx[p1][0]-k: g2[p2]=g2[p2+1] p2-=1 # print('A',p1,p2) if p2>=0: while mx[p1][0]>=mx[p2][0]+k: p1-=1 g2[p2]=g2[p1+1]+1 # print('B',p1+1,p2) p2-=1 for i in range(n): p=mx[i][1] res[p]=g1[i]+g2[i]+1 # print(mx,g1,g2,sep='\n') return ' '.join(map(str,res)) def read_input(fi): read = lambda type: type(fi.readline().rstrip('\n').rstrip('\r')) readArray = lambda type: list(map(type, fi.readline().split())) readMatrix = lambda type, x: [list(map(type, fi.readline().split())) for i in range(x)] readLines = lambda type, x: [type(fi.readline().rstrip('\n').rstrip('\r')) for i in range(x)] n,k=readArray(int) nx=readArray(int) return (n,k,nx) def main(): time0 = time.time() t = int(INFILE.readline()) # _ = int(INFILE.readline()) for ti in range(t): time1 = time.time() ans = "Case #%d: %s" % (ti + 1, solve(*read_input(INFILE))) sys.stderr.write("%.3f\t" % (time.time() - time1)) print(ans) sys.stderr.write("%.3f\n" % (time.time() - time0)) if INFILE != sys.stdin: INFILE.close() if __name__ == '__main__': main() # print (check('RSP'*20)) # print(check('R'*20+'S'*20+'P'*20)) # print(check('R'*20+'S'*30+'P'*10)) # print(test(16)) # print(test1())