import sys input = sys.stdin.readline sys.setrecursionlimit(20+10**5) from operator import itemgetter T=int(input()) for tests in range(T): N,K=map(int,input().split()) A=list(map(int,input().split())) X=[(A[i],i) for i in range(N)] X.sort(key=itemgetter(0)) DL=[-1]*N DR=[-1]*N ANS=[-1]*N def left(i): if DL[i]!=-1: return DL[i] score=1 if X[0][0]<=X[i][0]-K: OK=0 NG=i while NG>OK+1: mid=(OK+NG)//2 if X[mid][0]<=X[i][0]-K: OK=mid else: NG=mid DL[i]=1+left(OK) return DL[i] else: DL[i]=1 return 1 def right(i): if DR[i]!=-1: return DR[i] score=1 if X[-1][0]>=X[i][0]+K: OK=len(X)-1 NG=i while OK>NG+1: mid=(OK+NG)//2 if X[mid][0]>=X[i][0]+K: OK=mid else: NG=mid DR[i]=1+right(OK) return DR[i] else: DR[i]=1 return 1 for i in range(N): ANS[X[i][1]]=left(i)+right(i)-1 ANS=" ".join(map(str,ANS)) print("Case #"+str(tests+1)+": "+str(ANS))