import sys
input = lambda : sys.stdin.readline().rstrip()
sys.setrecursionlimit(max(1000, 10**9))
write = lambda x: sys.stdout.write(x+"\n")

n,c,k = list(map(int, input().split()))
ts = [None]*n
for i in range(n):
    ts[i] = int(input())
ts.sort()
ans = 0
last = -float("inf")
num = 0
for t in ts:
    if last<t or num==c:
        last = t+k
        num = 1
        ans += 1
    else:
        num += 1
print(ans)
ca04a0c84d4e72fb9cf56f45aa3b5ecf4d240051
<mask token>

<mask token>
sys.setrecursionlimit(max(1000, 10 ** 9))
<mask token>
for i in range(n):
    ts[i] = int(input())
ts.sort()
<mask token>
for t in ts:
    if last < t or num == c:
        last = t + k
        num = 1
        ans += 1
    else:
        num += 1
print(ans)

<mask token>
input = lambda : sys.stdin.readline().rstrip()
sys.setrecursionlimit(max(1000, 10 ** 9))
write = lambda x: sys.stdout.write(x + '\n')
n, c, k = list(map(int, input().split()))
ts = [None] * n
for i in range(n):
    ts[i] = int(input())
ts.sort()
ans = 0
last = -float('inf')
num = 0
for t in ts:
    if last < t or num == c:
        last = t + k
        num = 1
        ans += 1
    else:
        num += 1
print(ans)

import sys
input = lambda : sys.stdin.readline().rstrip()
sys.setrecursionlimit(max(1000, 10 ** 9))
write = lambda x: sys.stdout.write(x + '\n')
n, c, k = list(map(int, input().split()))
ts = [None] * n
for i in range(n):
    ts[i] = int(input())
ts.sort()
ans = 0
last = -float('inf')
num = 0
for t in ts:
    if last < t or num == c:
        last = t + k
        num = 1
        ans += 1
    else:
        num += 1
print(ans)

import sys
input = lambda : sys.stdin.readline().rstrip()
sys.setrecursionlimit(max(1000, 10**9))
write = lambda x: sys.stdout.write(x+"\n")

n,c,k = list(map(int, input().split()))
ts = [None]*n
for i in range(n):
    ts[i] = int(input())
ts.sort()
ans = 0
last = -float("inf")
num = 0
for t in ts:
    if last<t or num==c:
        last = t+k
        num = 1
        ans += 1
    else:
        num += 1
print(ans)