N,M,T=map(int,input().split()) A=list(map(int,input().split())) l,r=1,10**17 while True: m=(l+r)//2 v=[0]*(N+1) a=0 for i in range(M): x=A[i] if v[x]+1<=m: v[x]+=1 else: a+=1 rest=0 for i in range(1,N+1): t=m-v[i] rest+=t//T if rest>=a: r=m else: l=m+1 if l==r: break print(l)