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]*M res = 0 for a in A: if array[a] > 0: array[a] = -1 else: res += 1 cap = 0 for i in range(M): cap += array[i]//T if cap >= res: ok = mid #print(ng,mid,ok,True) else: ng = mid #print(ng,mid,ok,False) print(ok)