def check(x): nokori = 0 O = [] for i in range(N): if x-D[i]>=0: O.append(x-D[i]) else: nokori += D[i]-x while nokori>0: while O and O[-1]=T: O[-1]-=T nokori -= 1 else: break return nokori==0 import sys input = sys.stdin.readline N, M, T = map(int, input().split()) A = list(map(int, input().split())) D = [0 for _ in range(N)] for a in A: a-=1 D[a] += 1 l = 0 r = 10**18 while r-l>1: mid = (l+r)//2 if check(mid): r = mid else: l = mid print(r)