N,M,T=map(int,input().split()) ok=10**18 ng=0 A=list(map(int,input().split())) cnt=[0]*N for i in range(M): A[i]-=1 cnt[A[i]]+=1 while ok-ng>1: mid=(ok+ng)//2 rest=0 can=0 for i in range(N): rest+=max(0,cnt[i]-mid) can+=max(0,mid-cnt[i])//T if can>=rest: ok=mid else: ng=mid print(ok)