# 乗せれるだけ乗っけるのがいいと思うだけなんだけどどうなんでしょう

# なんか実装しにくい 世界一プログラミングが下手

# 二重whileなんてやるからだ forでいいやろ

n, c, k = list(map(int, input().split()))

ans = 0

arr = sorted([int(eval(input())) for _ in range(n)])

cur_passenger = 0

limit = arr[0] + k

for i in range(n):

    if cur_passenger < c and arr[i] <= limit:

        cur_passenger += 1

        # print("{}番目の人は{}のバスに乗せた".format(i, ans))

    else:

        cur_passenger = 1

        limit = arr[i] + k

        ans += 1

        # print("{}番目の人を{}のバスの最初の客にした".format(i, ans))

# あぶれた人を救済

if cur_passenger > 0:

    ans += 1

print(ans)

n, c, k = list(map(int, input().split()))

t = sorted([int(eval(input())) for _ in range(n)])

ans = 1

passenger = 0

limit = t[0] + k



for p in t:

    if passenger < c and p <= limit:

        passenger += 1

    else:

        ans += 1

        passenger = 1

        limit = p + k

print(ans)

# 乗せれるだけ乗っけるのがいいと思うだけなんだけどどうなんでしょう
# なんか実装しにくい 世界一プログラミングが下手
# 二重whileなんてやるからだ forでいいやろ
n, c, k = list(map(int, input().split()))
ans = 0
arr = sorted([int(eval(input())) for _ in range(n)])
cur_passenger = 0
limit = arr[0] + k
for i in range(n):
    if cur_passenger < c and arr[i] <= limit:
        cur_passenger += 1
        # print("{}番目の人は{}のバスに乗せた".format(i, ans))
    else:
        cur_passenger = 1
        limit = arr[i] + k
        ans += 1
        # print("{}番目の人を{}のバスの最初の客にした".format(i, ans))
# あぶれた人を救済
if cur_passenger > 0:
    ans += 1
print(ans)

n, c, k = list(map(int, input().split()))
t = sorted([int(eval(input())) for _ in range(n)])
ans = 1
passenger = 0
limit = t[0] + k
for p in t:
    if passenger < c and p <= limit:
        passenger += 1
    else:
        ans += 1
        passenger = 1
        limit = p + k
print(ans)

-# 乗せれるだけ乗っけるのがいいと思うだけなんだけどどうなんでしょう -# なんか実装しにくい 世界一プログラミングが下手 -# 二重whileなんてやるからだ forでいいやろ -ans = 0 -arr = sorted([int(eval(input())) for _ in range(n)]) -cur_passenger = 0 -limit = arr[0] + k -for i in range(n): -    if cur_passenger < c and arr[i] <= limit: -        cur_passenger += 1 -        # print("{}番目の人は{}のバスに乗せた".format(i, ans)) +t = sorted([int(eval(input())) for _ in range(n)]) +ans = 1 +passenger = 0 +limit = t[0] + k +for p in t: +    if passenger < c and p <= limit: +        passenger += 1 -        cur_passenger = 1 -        limit = arr[i] + k -        # print("{}番目の人を{}のバスの最初の客にした".format(i, ans)) -# あぶれた人を救済 -if cur_passenger > 0: -    ans += 1 +        passenger = 1 +        limit = p + k