N,M,T = map(int,input().split()) A = list(map(lambda x:int(x)-1,input().split())) ng = 0 ok = M while ok - ng > 1: mid = (ng + ok + 1)//2 array = [mid]*N res = 0 for a in A: #print(array) if array[a] > 0: array[a] -= 1 else: res += 1 cap = 0 #print(array) for i in range(N): cap += array[i]//T if cap >= res: #print(ng,mid,ok,True,cap,res) ok = mid else: #print(ng,mid,ok,False,cap,res) ng = mid print(ok)