import bisect N, D = map(int, input().split()) A = [0 for _ in range(N)] R = {0:0} for i in range(N): A[i] = int(input()) if R.get(A[i]): R[A[i]] += 1 else: R[A[i]] = 1 sA = sorted(R.items()) B = [0] C = [0] for i in range(1, len(sA)): B.append(B[i-1] + sA[i][1]) C.append(sA[i][0]) # print(sA) # print(B) # print(C) for i in range(N): x = A[i] - D if x < 0: x = 0 rr = bisect.bisect(C, x) rl = bisect.bisect_left(C, x) if rl == rr : print(B[rr]) else: print(B[rl])